设计模式的目的:在编写软件的过程中,程序员面临着来之耦合性,内聚性以及可维护性,可扩展性,重用性,灵活性等多方面的挑战,设计模式的好处是为了让程序具有如下特点:
- 代码重用性(即:相同功能的代码,不用多次编写)
- 可读性(即:程序规范性,便于其他程序员的阅读和理解)
- 可扩展性(即:当需要增加新的功能时,非常的方便)
- 可靠性(即:我们对程序增加新的功能的时候,对原来的功能没有影响)
- 可维护性(即:我们转让项目的时候,别人能很快的上手自己的项目)
- 最终目的是使程序呈现高内聚,低耦合的特性。
设计模式的七大原则:
1、单一职责原则:
对一个类来说,只负责某一项原则,如类A负责两个不同的职责,职责1的需求变更的时候可能会影响到职责2,这样的设计对程序的可维护性不好,我们应该将类A的粒度分为A1,A2。然后让不用的类负责不用的职责,互不干扰。
2、接口隔离原则:
客户端不应该依赖于它不需要的接口,如果一个类只需要一个功能,但是该接口里面有多个功能,我们可以把该功能放在另外一个接口里面,然后让该类去实现只有一个接口的类。
3、依赖倒装原则:
依赖倒转原则指高层模块不应该依赖于低层模块,二者应该依赖于抽象。抽象不应该依赖于细节,反之细节应该依赖于抽象。核心思想就是面向接口编程。依赖倒转原则的设计理念是:相对于细节的多变性,抽象的东西要稳定的多。以抽象为基础搭建的架构要比以细节为基础搭建的架构要稳定的多。在Java中,抽象指的是接口或细节,细节是具体的实现类。使用抽象类或者接口的好处是制定好规范,不涉及具体的操作,而把展现细节的任务交给实现类去完成。
4、里式替换原则:
我们在编程的时候使用继承给程序带来便利的同时也给程序带来了弊端。使用继承会给程序带来侵入性,父类中已经实现好的方法,实际上已经设定规范和契约。如果我们继承该父类重写父类的方法,就间接的给整个继承造成了破坏。所以在编程的尽量不要重写父类的方法,如果需要使用父类的方法,也可以通过聚合,组合,依赖来使用父类。
5、开闭原则:
开闭原则是编程中最基础最重要的设计原则,一个软件实体类里面的方法应该对扩展开发,对修改关闭,用抽象构建架构,用实现来扩展细节。当软件需要变换时,我们尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有的代码来实现变化。
6、迪米特法则:
一个对象应该对其他对象保持最少的了解,类与类的关系越密切,耦合度越大。迪米特法则也叫最少知道原则,即一个类对自己所依赖的类知道的越少越好。也就是说对于被依赖的类不管多么复杂,都尽量将逻辑封装在类的内部,对外提供公共的方法来对外使用。
7、合成复用原则:
在编程的时候尽量使用合成/聚合的方式,而不是使用继承来编程。