一.适配器模式:
- 让接口类的函数可以调用已有其他的类方法,提高类的复用,缺点就是增加了系统的复杂性,增加代码的阅读难度。
- 类适配器:实现implement接口,继承目标类,使用super关键字,直接在方法里调用父类方法。
- 对象适配器:光实现不继承,在方法里实例化该目标类的对象,属性调用。
二.桥接模式:
- 在两个独立变化的维度中,桥接模式好比一座桥梁,架起抽象和实现的联系,使两个变化可以有联系。(适配器反着来)
- 大致就是在抽象类里定义一个protected的接口类属性,由子类继承,调用父类构造函数初始化该属性,子类就可以使用该属性调用实现接口类里的方法。
三.组合模式:
- 如果单个对象和其组合对象具有相同操作,对象和其组合对象成树形结构,可以使用组合模式,它可以模糊简单元素和复杂元素的概念,高层模块调用更简单,缺点就是对象和组合对象都是实现类,不是接口,违背了依赖倒置原则。
- 实现方法大致是先编写一个对单个和组合操作方法取交集的抽象父类,再在父类里新增一个add和remove方法,并让对象和其组合对象继承,再在组合类里新增一个list叶子节点属性,由此可以实现在方法里循环遍历下级。
四.装饰者模式:
- 解决继承子类太多,造成类爆炸问题,由组合代替继承。主要包括抽象被装饰者、具体被装饰者、抽象装饰者、具体装饰者。
- 抽象被装饰者可以是接口也可以是抽象类,它主要是声明基本属性和操作,然后被具体被装饰者和抽象装饰者继承实现,抽象装饰者类里会声明一个抽象被装饰者的引用,由构造函数赋值,被具体装饰者继承然后super调用。
五.代理模式:
- 在调用某个方法时想增加操作时,可以使用代理模式,符合开闭原则。
- 将类里想访问的方法取出作为一个接口,并由该类和代理类实现。在代理类里定义一个该类的引用,然后在调用方法使初始化对象,由对象调用该方法。