一、设计模式原则
1.1 开放封闭原则
对扩展开放,对修改关闭。
1.2 里氏代换原则
所有引用基类(父类)的地方必须能透明地使用其子类的对象。
1.3 依赖倒置原则
抽象不应该依赖于细节,细节应当依赖于抽象。换言之,要针对接口编程,而不是针对实现编程。
1.4 接口隔离原则
使用多个隔离的接口,比使用单个接口要好。目的都是:降低依赖,降低耦合。
1.5 最少知识原则
最少知识原则——即迪米特法则:一个实体应当尽量少的与其他实体之间发生相互作用,使得系统功能模块相对独立。如果其中的一个对象需要调用另一个对象的某一个方法的话,可以通过第三者转发这个调用。
详情链接:JAVA设计模式—最少知识原则
1.6 合成复用原则
原则是尽量使用合成/聚合的方式,而不是使用继承。
1.6.1、什么是合成?
- 合成表示一种强的拥有关系,体现了严格的部分和整体的关系,部分和整体的生命周期一样,打个比方:人有两个胳膊,胳膊和人就是部分和整体的关系,人去世了,那么胳膊也就没用了,也就是说胳膊和人的生命周期是相同的
- 合成关系用实心的菱形+实线来表示
1.6.2、什么是聚合?
- 聚合表示一种弱的拥有关系,体现的是A对象可以包含B对象,但是B对象并不是A对象的一部分,打个比方:人是群居动物,所以每个人属于一个人群,一个人群可以有多个人,所以人群和人是聚合的关系
- 聚合关系用空心的菱形+实线来表示
1.6.3、为什么尽量不要使用类继承而使用合成/聚合?
- 对象的继承关系在编译时就定义好了,所以无法在运行时改变从父类继承的子类的实现;
- 子类的实现和它的父类有非常紧密的依赖关系,以至于父类实现中的任何变化必然会导致子类发生变化;
- 当你复用子类的时候,如果继承下来的实现不适合解决新的问题,则父类必须重写或者被其它更适合的类所替换;
- 这种依赖关系限制了灵活性,并最终限制了复用性;
二、设计模式分类
2.1 创建型模式
2.1.1 单例模式
详情链接:JAVA设计模式—单例模式
2.1.2 工厂模式
详情链接:JAVA设计模式—工厂模式
2.1.3 原型模式
2.1.4 建造者模式
2.2 结构型模式
2.2.1 代理模式
详情链接:JAVA设计模式—代理模式