一个好的系统应该具有三个性质:可扩展性,灵活性,可插入性
可扩展性:新的性能很容易加入到系统中去。
灵活性:允许代码修改但不会波及到很多其他的模块。
可插入性:很容易将一个类抽出去,同时很容易的将另一个有同样接口的类加入进来。
设计模式的原则:
一:“开-闭”原则:一个软件实体应该对扩展开放,对修改关闭。此原则是由“Bertrand Meyer”提出的。
原文是:“Software entities should be open for extension,but closed for modification”。要做到“开-闭”原则,抽象化是关键,抽象化预见了所有的可能扩展,使得在需要扩展时,抽象层不需要修改。可以从抽象层导出一个或多个新的具体类来改变系统的行为。“开-闭”原则从另一种角度看就是“对可变性封装原则”,可变性封装就是找到一个系统的可变因素把他封装起来。对可变性因素的封装一般用接口和抽象类。可变性封装应该注意一种可变性不应该与另一种可变性混合在一起。也就是继承结构一般都不会超过二层。
二:里氏代换原则:任何基类可以出现的地方,子类可以出现。语言只有满足多态性才能满足该条件。
三:合成复用原则:要多用合成关系来实现,少用继承关系达到复用。也就是在使用继承关系时是要满足一定条件的。
四:依赖倒转原则:要依赖于抽象,不要依赖于实现。针对接口编程,而不是针对实现编程。在传递参数时,尽量引用高层次的类。
五:接口隔离原则:每个接口应该是一种角色,只实现一种功能。这样在系统功能扩展时,不会将修改的压力传递到其他对象。
六:迪米特法则:一个实体应该尽少量的和其他实体发生联系。
设计模式分类:
设计模式根据其目的分为三类:创造型,结构型,行为型。
创建型模式主要是用来创建对象。
结构型模式主要是处理类和对象的组合。
行为型模式主要是用来描述对类和对象怎样怎样分配和怎样交互的职责。