设计模式的目的

1)代码的重用性(相同的代码不能多次编写)
2)可读性(编码规范性,便于其他程序的阅读和理解)
3)可扩展性(当需要增加新的功能时,非常方便容易扩展)
4)可靠性(当增加新的功能,对原先的功能没有影响)
5)使程序呈现高内聚。低耦合的特征

六大原则

单一职责原则

定义一个类,应该仅有一个引起它变化的原因
核心思想:应该有且仅有一个原因引起类的变更
问题描述:假如有类Class 完成职责T1,T2,当职责T1或T2有变更需要修改时,有可能影响到该类的另外一个职责正常工作。
单一职责原则注意事项和细节:
1)降低类的复杂度,一个类只负责一个职责
2)提高类的可读性,可维护性
3)降低变更引起的风险

开放封闭原则

1)类、模块、函数等应该是可以拓展的,但是不可以修改
2)尽量通过扩展软件实体来解决需求变化,而不是通过修改已有的代码来完成变化。
3)编程中遵循其他原则,以及使用设计模式的摸底就是遵循开闭原则。

里氏替换原则

1)所有引用基类的地方必须能透明地使用其子类的对象
2)在使用继承时,遵循里氏替换原则,在子类中尽量不要重写父类的方法
3)可以通过聚合、组合、依赖等接解决问题,解决继承的问题。

依赖倒置原则

1)高层模块不应该依赖于底层模块,两者都应该依赖于抽象。
2)抽象不应该依赖于细节,细节应该依赖于抽象。
3)依赖倒置的中心思想是面向接口编程。
4) 依赖倒置原则是基于这样的设计理念:相对于细节多变性,抽象的东西要稳定的多,以抽象为基础搭建的架构比细节为基础的架构要稳定的多,在java中,抽象指的是接口或者抽象类,细节就是具体的实现类。
5)使用接口或者抽象类的目的是制定好规范,而不涉及任何具体的操作,把展现细节的任务交给他们的实现类去实现

依赖传递的三种方式:
1)构造器
2)setter方法
3)接口传递

注意事项:
1)底层模块尽量都要有抽象类和接口,或者两者都有,程序稳定性更好
2)变量的声明尽量是抽象类或者接口,我们的变量引用和实际对象间,就存在一个缓冲层,有利于程序的扩展和优化
3)继承时遵循里氏替换原则。

接口隔离原则

客户端不应该依赖他不需要的接口,一个类对另一个类的依赖应该建立在最小的接口上。

迪米特原则

1)一天个对象应该对其他对象保持最少的了解
2)类和类关系越密切,耦合性约到
3)又叫最少知道原则,即一个类对自己依赖的类知道的越少越好。也就是说,对于被依赖的类不管有多么负责,都尽量将逻辑封装在类的内部,对外除了提供public方法,不对外泄露任何信息
4)只与直接的朋友通信
5)直接的朋友:每个对象都会与其他对象有耦合关系,只要两个对象之间有耦合关系,我们就说这两个对象之间是朋友关系。
核心思想:类间解耦