设计模式-代理,装饰,适配器,桥接模式
作者:
也许
,
2022-05-23 18:13:38
,
所有人可见
,
阅读 252
类对象的组合方式
生成子类继承
关联:
构造函数传参(参数是另一个类的对象)
直接在类中生成另一个类的对象
代理模式
无多态
适合于:为其他对象提供一种代理以控制对这个对象的访问。
构造一个代理类,代理类中使用另一个对象方法
模板:a是代理类,b类实现协议类protocol;a中包含b类,a可以使用b类的接口
好处:main函数不需要修改了。只需要修改协议实现类
装饰模式
有多态
功能:扩展对象的功能,是继承关系的一个替换方案。
把要添加的附加功能分别放在单独的类中,并让这个类包含它要装饰的对象
当需要执行时,客户端就可以有选择地、按顺序地使用装饰功能包装对象
适用于:
动态(自由装饰)的给一个对象添加一些额外的职责。就增加功能来说,此模式比生成子类更为灵活。
适配器模式
没有多态,只是个接口中转站
适用于:
是将一个类的接口转换成客户希望的另外一个接口。使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
构造一个适配器类,继承自客户需求的类,将实际类的对象指针传入适配器类中,在适配器类中实现客户需要的接口,使用
在客户需求的接口中使用实际类对象的方法,从而实现了将一个类的接口转换成客户希望的另外一个接口
桥接模式
适用于:桥接模式是将抽象部分与实现部分分离(解耦合),使它们都可以独立的变化。
车 安装 发动机 ;不同型号的车,安装不同型号的发动机
继承方法实现:不同的车型,不同型号,安装不同类型的发动机,组合很多,会引起子类的泛滥。
需要把“安装发动机”这个事,做很好的分解;把抽象 和 行为实现 分开
车抽象类,发动机抽象类
发动机类:有安装发动机方法,具体实现
车类中:有安装发动机方法,不具体实现。使用发动机使用的方法,通过构造函数传入发动机类对象的指针来关联发动机类
客户端可以自由组合 不同型号的车和不同型号的发动机自由组合