前言:为什么要学习设计模式
当我们写代码的时候,如果仅仅是停留在实现功能层面,这是远远不够的。这仅仅是初级阶段。我觉得我们至少要从以下几个方面去考虑,代码的灵活性、扩展性、性健壮、维护性、可读性等这样才能写出高质量的代码,而设计模式能很大程度上帮助完成这些事情,看看优秀的开源代码,随处可见的设计模式在代码里应用,我们只有在平时的撸码过程中不断思考运用打磨才能在关键的时候厚积薄发
设计模式的七个原则
一、开闭原则
对于修改是关闭,对于扩展是开放的,任何的修改都有可能引入bug,所以对修改应该是关闭的,扩展比修改来的容易灵活
二、里氏替换原则
进行继承关系抽象时候,凡是可以用父类的地方都可以用子类去替换,也就是说子类继承父类时候,只扩展父类功能,不修改父类功能
三、单一职责原则
承担的职责越多被复用的可能性越笑小,对一个类而言应该仅有一个引起它变化的原因
四、迪米特法则(最少知道原则)
一个类对它所依赖的类知道的越少越好。对于被依赖的类不管多么复杂,都尽量将逻辑封装在类的内部
五、接口隔离原则
保证接口的纯洁性,例如接口InterfaceI有method1、method2、method3、method4、method5。如果ClassA仅仅需要method1、method2。ClassB仅仅需要method4、method5。那么而如果ClassA要实现InterfaceI必须要实现这5个方法,ClassB要实现InterfaceI也必须要实现这5个方法,那么方法就冗余了,其实我们在设计接口时候应该接InterfaceI拆分成三个InterfaceA含有方法method1、method2,InterfaceB含有方法method4、method5和InterfaceC含有方法method3
六、依赖倒转原则
针对接口编程,细节应该依赖于抽象,抽象不应该依赖于细节,因为抽象的东西是稳定的,而细节是经常变化
七、合成/聚合复用原则
我们知道面向对象的三大特征:封装、继承、多态、其中继承的目的主要就是实现代码的复用然后,对象的继承关系是在编译阶段就指定了,无法在运行时改变从父类继承的实现,子类依赖父类,父类变化子类也跟着变化,
合成/聚合复用原则是在一个新的对象里面使用一些已有的对象,使之成为新对象的一部分;新的对象通过向这些对象的委派达到复用已有功能的目的。优先使用对象合成/聚合
合成是一种强调拥有关系,体现了严格的部分和和整体关系(大雁和翅膀/人和身体)他们生命周期相同
聚合是一种弱的拥有关系A可以包含B但B不是A的一部分(大雁和雁群/班级和学生)这个地址对这个原则理解比较好www.cnblogs.com/jing99/p/12…