标签:
经过这半年的学习,自己对设计模式这门课程也有了一定的认知。前面也发了关于23个设计模式的博客。现在对这些设计模式进行一个整体的总结。
首先,设计模式有六大原则:
原则一、单一职责原则
定义:There should never be more than one reason for a class to change(不要存在多于一个导致类变更的原因)。通俗的说,即一个类只负责一项职责。
好处:
1、降低类的复杂度。
2、提高可读性。
3、提高可维护性。
4、变更引起的风险降低。
原则二、里氏替换原则
定义:Functions that use pointers or references to base classes must be able to use objects of derived classes without knowing it(所有引用基类的地方必须能够透明地使用其子类的对象)
优点:
增强程序的健壮性。
原则三:依赖倒置原则
定义:High level modules should not depend upon low modules. Both should depend upon abstractions.Abstractions should not depend upon details.Details should depend upon abstractions.
(高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。)
(简单来说也就是面向接口编程)
使用这一原则,遵循下面几个规则就可以:
1、每个类尽量都有借口或抽象类,或者抽象类和接口两者都具备。
2、变量的表面类型尽量是接口或者抽象类。
3.任何类都不应该从具体类派生。
原则四、接口隔离原则
定义一:CLients should not be forced to depend upon interfaces that they don‘t use(客户端不应该依赖它不需要的接口)。
定义二:The dependency of one class to another one should depend on the smallest possible interface(类间的依赖关系应该建立在最小的接口上)。
简单来讲就是:建立单一接口,不要建立臃肿庞大的接口。
需要注意一点:根据接口隔离原则拆分接口时,首先必须满足单一职责原则。
原则五、迪米特法则(最少知识原则)
定义:一个对象应该对其他对象有最少的了解。(Only talk to your immedate friends)
迪米特法则要求尽量不要对外公布太多的public方法和非静态的public变量,尽量内敛,多使用private、protected、package-private等访问权限。
原则六:开闭原则
定义:Software entities like classes,modules and functions should be open for extension but closed for modifications(一个软件实体如类、模块、和函数应该对扩展开放,对修改关闭)。
优点:
1、提高复用性。
2、提高复用性。
3、提高维护性。
上面是设计模式需要遵循的六大原则。
接下来我们来看下,设计模式的三种类型。
我们学习过的设计模式总共有23个。
这23个模式根据自己的功能也就是完成的工作,又可以划分为三种类型:创建型、结构型和行为型。
一、创建型包括一下设计模式:
二、结构型包括一下设计模式:
10、State 状态模式
12、Chain of Responsibility 责任 链模式
三、行为型包括一下设计模式:
18、Facade 外观模式
19、Proxy 代理模式
22、Bridge 桥接模式
总结:
学习设计模式,不是为了任何情况都按某种模式设计,而是为了自己的设计提供思路和方法。
不要因为为了使用某种设计模式而改变自己的需求。
要动态的选择合适的方式来进行开发。
参考资料:
设计模式之禅
备注:
转载请注明出处:http://blog.csdn.net/wsyw126/article/details/51347322
作者:WSYW126
标签:
原文地址:http://blog.csdn.net/wsyw126/article/details/51347322