第五章
一、面向可维护性的构造技术
SOLID原则:
1.SRP(单一责任原则):不应有多于1个的原因使得一个类发生变化;一个类,一个责任。
2.OCP((面向变化的)开放/封闭原则):
对扩展性的开放:模块的行为应是可扩展的,从而该模块可表现出新的行为以满足需求的变化。
对修改的封闭:模块自身的代码是不应被修改的;扩展模块行为的一般途径是修改模块的内部实现;如果一个模块不能被修改,那么它通常被认为是具有固定的行为。
关键:抽象方法。同时解决了(if/else/switch太多维护困难的问题)
3.LSP(Liskov替换原则):同第四章。
4.DIP(依赖转置原则):抽象的模块不应依赖于具体的模块;具体应依赖于抽象。
5.ISP(接口聚合原则):不能强迫客户端依赖于它们不需要的接口:只提供必需的接口。
二、面向可维护性的设计模式
1.工厂方法:
正常客户端:Product p = new ProductTwo();//通过new一个新的对象
工厂方法下:Product p = new ConcreteTwo().makeObject();//通过一个类中的方法创建对象。不暴露内部类的名字。
工厂方法:可以在ADT中也可以单独构建一个类:
Abstract Factory抽象工厂:把多个工厂方法组合到一起。
2. Proxy代理模式:隔离对复杂 对象的访问,降低难度/代价,定位在“访问/使用行为”
3.Observer模式:建立对象间一对多的情况。如偶像更新微博,所有的observer自动打印更新的行为。observer关注偶像,偶像的ADT自动将observer加入关注者名单。
4.Visitor模式:对特定类型的object的特定操作(visit),在运行时将二者动态绑定到一起,该操作可以灵活更改,无需更改被visit的类。
特点:在特定ADT上执行某种特定操作,但该操作不在ADT内部实现,而是delegate到独立的visitor对象,客户端可灵活扩展/改变visitor的操作算法,而不影响ADT。