您的位置:首页 > 其它

设计模式之总结篇(设计模式六大原则以及设计模式三种类型)

2016-05-08 21:01 381 查看
经过这半年的学习,自己对设计模式这门课程也有了一定的认知。前面也发了关于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个模式根据自己的功能也就是完成的工作,又可以划分为三种类型:创建型、结构型和行为型。

一、创建型包括一下设计模式:

1、Singleton     单例模式

2、Abstract Factory     抽象工厂

3、Factory Method     工厂方法

4、Builder     建造模式

5、Prototype     原型模式

二、结构型包括一下设计模式:

6、Iterator     迭代器模式

7、Observer     观察者模式

8、Template Method     模板方法

9、Command     命令模式

10、State     状态模式

11、Strategy     策略模式

12、Chain of Responsibility   责任 链模式

13、Mediator     中介者模式

14、Visitor     访问者模式

15、Interpreter     解释器模式

16、Memento     备忘录模式

三、行为型包括一下设计模式:

17、Composite     组合模式

18、Facade     外观模式

19、Proxy     代理模式

20、Adapter     适配器模式

21、Decrator      装饰模式

22、Bridge     桥接模式

23、Flyweight     享元模式

总结

学习设计模式,不是为了任何情况都按某种模式设计,而是为了自己的设计提供思路和方法。

不要因为为了使用某种设计模式而改变自己的需求。

要动态的选择合适的方式来进行开发。

参考资料
设计模式之禅

备注

转载请注明出处:http://blog.csdn.net/wsyw126/article/details/51347322

作者:WSYW126
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息