七大原则
23种设计模式,遵守软边编写的七大原则,因此学好设计模式必要理解软件编写的七大原则
单一职责原则
每个类均应只负责某一项职责。当类中的逻辑比较简单,方法比较少时,可以在方法级别上遵守单一职责原则。即每个方法负责一项职责。
如UserDao只应该负责关于用户这一项职责,UserDao的所有方法只应该 针对User表进行增删改查,不应该出现其它表的操作。
当多个职责耦合在一起,其中一个职责发生变化可能会影响其它职责。
里氏替换替换原则
继承产生的弊端,比如使用继承会给程序带来侵入性,程序的可移植性降低,增加对象间的耦合性,如果一个类被其它的类所继承,则当这个类需要修改时,必须考虑到所有的子类,并且父类修改后,所有涉及到子类的功能都有可能产生故障。
里氏替换原则是程序中用到父类的地方都可以用其子类替换,所以要求其子类尽量不要去重写父类已经实现的方法,因为子类重写了父类的方法的话,当用到父类的地方用子类代替以后会导致调用子类重写的方法,不会去调用父类的方法,会导致程序出现错误。
依赖倒置原则
核心思想面向接口编程,细节依赖抽象。
细节:实现类
抽象:接口
类不要直接依赖其它类,要通过接口依赖其它的实现类。
接口隔离原则
例:当B接口有5个抽象方法(method1,method2,method3,method4,method5)
,类A需要用到method1,method2,method5所以只需要实现这三个方法,有两个方法没必要实现。
类C需要用到method3,method4,method5所以也只需要实现三个方法,有两个方法没必要实现。
这种情况下就需要用遵守接口隔离原则进行接口拆分。
将B接口拆分为三个接口分别拥有方法(method3,method4),(method1,method2),(method5)类A,C分别去实现对应的接口。
迪米特法则
最少知道原则,即一个类对自己依赖的类(A依赖B)知道的越少越好。被依赖的类(B)尽量将自己的逻辑封装在自己的内部,提供一个public方法供外部(A)调用,不要在A类去访问B类的信息,将B类的逻辑在A类实现。
直接朋友:每个类都会与其它类产生耦合,我们称出现成员变量,方法参数,方法返回值中的类为直接朋友,而在局部变量中出现的类不是直接朋友,迪米特法则避免不是直接朋友的出现
开闭原则
对扩展开放(提供方),对修改关闭(对使用方)。
一般都是使用方依赖的抽象类型的对象(接口或者抽象类),去调用抽象方法完成某件事,当需要增加功能时,只需要提供方去增加一个实现类去实现这个功能。使用方只需要控制类型。
合成复用原则
尽量使用合成、聚合的方式代替继承