JAVA设计模式理解
1. 单一职责
一个类只负责一项职责
2.里氏替换原则
当使用继承时,遵循里氏替换原则。类B继承类A时,除添加新的方法完成新增功能P2外,尽量不要重写父类A的方法,也尽量不要重载父类A的方法。【由时候我们可以采用final的手段强制来遵循】
3.开闭原则
用抽象构建框架,用实现扩展细节
一个软件实体如类、模块和函数应该对扩展开放,对修改关闭
4.依赖倒置原则
要求对抽象进行编程,不要对实现进行编程,这样就降低了客户与实现模块间的耦合。
抽象接口是对低层模块的抽象,低层模块继承或实现该抽象接口。
类与类之间都通过抽象接口层来建立关系。
5.接口隔离原则
一个类对一个类的依赖应该建立在最小的接口上
建立单一接口,不要建立庞大臃肿的接口
尽量细化接口,接口中的方法尽量少
6、迪米特原则
迪米特原则的初衷在于降低类之间的耦合。由于每个类尽量减少对其他类的依赖,因此,很容易使得系统的功能模块功能独立,相互之间不存在(或很少有)依赖关系。
迪米特原则不希望类直接建立直接的接触。如果真的有需要建立联系,也希望能通过它的友元类来转达。因此,应用迪米特原则有可能造成的一个后果就是:系统中存在大量的中介类,这些类之所以存在完全是为了传递类之间的相互调用关系,这在一定程度上增加了系统的复杂度。
如果一个方法放在本类中,既不增加类间关系,也对本类不产生负面影响,就放置在本类中。
7、组合/聚合复用原则
即在一个新的对象里面使用一些已有的对象,使之成为新对象的一部分,新对象通过向这些对象的委派达到复用已有功能的目的。就是说要尽量的使用合成和聚合,而不是继承关系达到复用的目的。
组合和聚合都是关联的特殊种类。
聚合表示整体和部分的关系,表示“拥有”。组合则是一种更强的“拥有”,部分和整体的生命周期一样。
组合的新的对象完全支配其组成部分,包括它们的创建和湮灭等。一个组合关系的成分对象是不能与另一个组合关系共享的。
组合是值的聚合(Aggregation by Value),而一般说的聚合是引用的聚合(Aggregation by Reference)。
在面向对象设计中,有两种基本的办法可以实现复用:第一种是通过组合/聚合,第二种就是通过继承。
学习之原文