桥接模式:将抽象与实现分离,使它们可以独立变化。它是用组合关系代替继承关系来实现,从而降低了抽象和实现这两个可变维度的耦合度,如果一个类中存在了两个不同纬度的接口,就可以使用一个第三方类来聚合它们,
- 当一个系统需要在构件的抽象化角色和具体化角色之间增加更多的灵活性时。避免在两个层次之间建立静态的继承联系,通过桥接模式可以使它们在抽象层建立一个关联关系。
- 如果一个对象依赖两个纬度的抽象,那么可以有一个抽象去聚合另一个抽象,这样用户就可
以只依赖于一个抽象,就算以后业务变更,也不用去变动里面的代码,只用添加一个新的实现
装饰者模式(又叫门面模式):,是一种通过为多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式。该模式对外有一个统一接口,外部应用程序不用关心内部子系统的具体的细节,这样会大大降低应用程序的复杂度,提高了程序的可维护性。
- 如果系统依赖于众多的复杂对象,那么可以定义一个facade,在里面定义需要用到的复杂对象,用户只用关注与facade里对外提供的方法,不用关注具体是怎么实现的,使得系统使用起来更加容易
- 但是这样不符合开闭原则,之后业务修改所有的相关代码都需要改变