一、设计模式七大原则
1、单一职责原则
对于类来说,一个类只负责一项职责。若一个类负责多个职责,则当一个职责发生变化,可能影响另一个职责功能正常使用
2、接口隔离原则(Interface Segregation Principle)
一个类对另一个类的依赖应该建立在最小数量接口上,譬如类A 依赖(参数传递) 类B,而类B要实现接口1的全部方法,此时,接口1应该建立最小数量接口。若过多,则需要拆分。减少浪费。
3、依赖倒置原则(Dependence Inversion Principle)
细节依赖抽象,而不是抽象依赖细节。中心思想上面向接口编程
依赖关系传递的三种方式:
1)接口传递
2)构造方法传递
3)setter传递
4、里氏替换原则(Lisko Substitution Principle)
主要针对继承
尽量不要修改父类的方法的功能
如要修改,可以通过组合,聚合,依赖来解决问题。
5、开闭原则(Open Closed Principle)【重要,基础】
模块和功能对扩展开放(对提供方),对修改关闭(对使用方)。用抽象构建框架,用实现扩展细节。
6、迪米特原则(Demeter Principle)
最小知道原则降底类之间的耦合关系。
直接朋友:成员变量,方法参数,方法返回值。B类作为A类的成员变量,B类在A类的方法作为参数传递,B类作为Al类某方法的返回值。
不是直接朋友:局部变量。例如, B b = new B(); 存在于A类中。B在方法内部作为参数返回
7、合成复用原则(Composite Reuse Principle)
尽量使用合成或聚合的方式,而不是使用继承。
设计核心思想
1、找出可能发生变化的部分,将其独立出来,不要和那些不需要变化的代码混合在一起
2、针对接口编程,而不是针对实现编程
3、为交互对象之间的松耦合而努力。
二、类图的关系
1、依赖关系(Dependency)
类的成员属性、方法参数、返回类型等等
2、泛化关系-继承-依赖的特例(Generalization)
3、实现关系-依赖的特例(Realization)
4、关联关系(Association)
一对一:单向、双向
5、聚合关系-关联特例(Aggregation)
电脑和其配件,可以拆分
6、组合关系(composition)
整体和部分,但是不可分离,比如人和脑袋。
private IDcard idcard ; //聚合关系,但是级联关系,变为同生共死的关系,则为组合
private Head head = new Head (); //组合关系