概述
结构型模式包含以下七种
适配器模式、代理模式、桥接模式、装饰器模式、享元模式、外观模式、组合模式
1、适配器模式(Adapter)
主要应用场景为接口不适用,需要将adaptee封装成target接口的模式,
使用方式有两种,adapter中保存adaptee的一个对象指针;或adapter private继承adaptee,即实现继承。
2、代理模式(Proxy)
代理模式常见几种应用:
①远程代理:如网络应用,调用远程的某个方法
②虚拟代理:如网页浏览时需要加载一些消耗时间的资源如图片
③智能代理:如智能指针,对指针加了访问计数和资源清理
④保护代理:如对不同用户的权限控制
代理模式提供的接口是一样的,是为了封装被代理的方法不被暴露。
代理和被代理之间继承自同一父类,proxy中保存被代理的对象指针,调用方法时调用实际对象的实现方法。
3、桥接模式(Bridge)
举例:Abstraction类是笔,有大中小型号,Implementor是颜色,有各种颜色,通过组合的形式,减少了实际类的种数
通过组合方式解决多场景下继承的实现类变多的情况
4、装饰器模式(Decorator)
具体事例:IO类,BufferIO类。
无需通过继承增加子类的方式,就可以实现对类功能的扩展。
装饰器跟被装饰器继承自同一父类,同时装饰器中保存一个component类指针。实现对被装饰类功能的扩展。
跟代理模式很像,装饰器更强调对被装饰类的功能增强,无隔离作用;代理对外提供的都是代理类,有一定隔离作用。
5、享元模式(Flyweight)
当系统多处应用同一组对象,则通过加一个对象池,即factory来缓存。如果未创建则创建,如果已经创建则返回已创建对象的指针。
6、外观模式(Facade)
当系统比较复杂时,使客户不用依赖于多个类,只依赖于门面(外观)类,然后由Facade角色对不同方法进行调用。
即为复杂的系统提供统一的接口。
7、组合模式(Composite)
将一个复杂的系统表示为不同Leaf(组件)的一个组合;如一个公司,由不同部门,每个部门由不同员工组成,这样一个树状结构。
最后
以上就是魁梧石头为你收集整理的设计模式学习-结构型模式的全部内容,希望文章能够帮你解决设计模式学习-结构型模式所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复