设计模式学习-结构型模式

结构型模式包含以下七种

适配器模式、代理模式、桥接模式、装饰器模式、享元模式、外观模式、组合模式

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(组件)的一个组合;如一个公司,由不同部门,每个部门由不同员工组成,这样一个树状结构。

发布了2 篇原创文章 · 获赞 0 · 访问量 1

猜你喜欢

转载自blog.csdn.net/jklhj123/article/details/105499895