0.LSP原则
0)子类型可以增加方法,但不可以删除方法
1)子类型需要实现继承的抽象类型中的所有未实现方法
2)子类型中重写的方法必须有相同或子类型的返回值
3)子类型中重写的方法必须使用同样类型的参数
4)子类型中重写的方法不能抛出额外的异常
5)子类型的spec必须满足更弱的前置条件和更强的后置条件
1. Adapter模式
adapter模式用来将某个类或接口转换为客户端需要的方式,而不暴露其细节。基本原理在客户端和隐藏类之间加入一个接口,并由一个类实现该接口,在这个中间类的内部进行转换,并由客户端实例化接口来实现,从而避免了暴露中间转换的细节,避免了隐藏类的内部方法的实现方式。
2.Decorator模式
Decorator模式通过给定一个接口来进行各种包装,每次包装增添一个或多个功能,最终版本经过多次包装类的构造来实现。
3.Facade模式
Facade模式的核心思想是增添了一个中间通道,即用一个大接口将所有的小接口统一,通过对大的接口进行参数的输入来选择小的接口的实现,减少了客户端的工作量,也方便用户选择。
4.Strategy模式
该模式和Facade模式的思想有异曲同工之妙,它是给定了不同的算法并进行大的接口包装,客户段可以动态地选择路径,以决定使用哪种算法,与Facade模式的区别在于该模式选择的接口仅限于算法层面,是为一个功能而实现,而后者的接口一般趋向于多种用途。
5. Template模式
该模式用来对一项功能的差异细节化而设置,它在公共类中规定了做事情的步骤,但具体每个步骤的实现交由不同的接口来实现,在确保统一的基础上增加了可变动的小程度的差异化。
6. Iterator模式
该模式用来迭代时使用,它的思想是让自己的集合类实现Iterable接口,并实现自己的独特Iterator迭代器,即提供一个接口,自己对容器内的元素进行操作(hasNext, next, remove),允许客户端利用这个迭代器进行显式或隐式的迭代遍历,通过这种方式,客户端可以按自己的心意对容器内的元素进行遍历或排序,更加灵活。