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

经过这半年的学习,自己对设计模式这门课程也有了一定的认知。前面也发了关于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

时间: 2024-10-12 03:55:23

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

设计模式的三种类型

设计模式(GOF模式)分为三种类型,共23类.一.创建型模式:单例模式.抽象工厂模式.建造者模式.工厂模式.原型模式.二.结构型模式:适配器模式.桥接模式.装饰模式.组合模式.外观模式.享元模式.代理模式.三.行为型模式:模版方法模式.命令模式.迭代器模式.观察者模式.中介者模式.备忘录模式.解释器模式.状态模式.策略模式.职责链模式.访问者模式.原文链接:https://blog.csdn.net/zhw0596/article/details/80852325 原文地址:https://ww

初识设计模式、软件设计的六大原则

总结:本篇文字分为两个部分.第一部分:设计模式基本常识:第二部分:软件设计中的六大原则,并详细分析了单一职责原则.(本篇文章的时间轴参考:为知笔记支撑文件夹\Java设计模式(时间序列图).vsdx) 部分一:初识设计模式 什么是设计模式?James拿到这个论点时,很是迷惑! 模式?是不是一个模子?模式识别--计算机领域的经典问题? 设计模拟?软件的设计模式?不懂!!! 但是在实际编码.调试过程中,James的遇到过很是难解的问题:工程代码中有过多的冗余代码--代码复用性不高:需求一旦改变,需要

设计模式详解之程序设计六大原则

设计模式(Designpattern)是一套被反复使用(spring源码当中就出现了很多模式,如模板模式,代理模式,单例模式,工厂模式等).多数人知晓的.经过分类编目的.代码设计经验的总结.还有一种说法,设计模式是可以解决特定场景的问题的一系列方法. 设计模式可以帮助我们改善系统的设计,增强系统的健壮性.可扩展性,为以后铺平道路,但是过多的模式也会系统变的复杂. 在学习设计模式之前,先了解程序设计六大原则. 这些原则是指导模式的规则,原则是死的,人是活的,所以并不是要完完全全遵守这些规则,否则为

[转]设计模式--六大原则与三种类型

一.6大原则 1.单一职责原则(Single Responsibility Principle) 定义:就一个类而言,应该仅有一个引起它变化的原因: 如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责变化可能会消弱或者抑制这个类完成其他职责的能力.这种耦合会导致脆弱的设计,当变化发生时,设计会遭受到意想不到的破坏: T负责两个不同的职责:职责P1,职责P2.当由于职责P1需求发生改变而需要修改类T时,有可能会导致原本运行正常的职责P2功能发生故障.也就是说职责P1和P2被耦合在了一起

Monkey源码分析番外篇之Android注入事件的三种方法比较

原文:http://www.pocketmagic.net/2012/04/injecting-events-programatically-on-android/#.VEoIoIuUcaV 往下分析monkey事件注入源码之前先了解下在android系统下事件注入的方式,翻译一篇国外文章如下. Method 1: Using internal APIs 方法1:使用内部APIs This approach has its risks, like it is always with intern

【SSH三大框架】Spring基础第二篇:Spring依赖注入的三种方式

控制反转(Inversion of Control)和依赖注入(Dependency Injection): 应用控制反转,对象在被创建的时候,由一个调控系统内所有对象的外界实体将其所依赖的对象的引用传递给它.也可以说,依赖被注入到对象中.所以,控制反转是,关于一个对象如何获取他所依赖的对象的引用,这个责任的反转. 对于依赖注入,有三种方式: 1.使用属性的setter方法注入 2.使用构造器注入 3.使用注解注入 下面我们介绍下这三种方式: 一.使用属性的setter方法注入 首先,我们写一个

横冲直撞vue(第三篇):vue中template的三种写法、v-bind、v-on、更新元素的指令v-text与v-html、条件渲染指令v-if 与v-show、v-for

一.vue中template的三种写法 第一种(字符串模板写法): 直接写在vue构造器里,这种写法比较直观,适用于html代码不多的场景,但是如果模板里html代码太多,不便于维护,不建议这么写. <body> <div id="app"></div> <script src="./lib/vue.js"></script> <script type="text/javascript&qu

Java设计模式之——面向对象六大原则

面向对象六大原则: 设计模式六大原则(1):单一职责原则 设计模式六大原则(2):开闭原则 设计模式六大原则(3):里氏替换原则 设计模式六大原则(4):依赖倒置原则 设计模式六大原则(5):接口隔离原则 设计模式六大原则(6):迪米特原则 设计模式六大原则(1):单一职责原则 单一职责原则的英文名称是 Single Responsibility Principle,缩写为 SRP.SRP 的定义是:就一个类而言,应该仅有一个引起它变化的原因.简单来说,一个类中应该是一组相关性很高的函数.数据的

连载:面向对象葵花宝典:思想、技巧与实践(39) - 设计原则 vs 设计模式

又是设计原则,又是设计模式,到底该用哪个呢? ============================================================================= 在"设计模型"一章中,我们提到设计原则和设计模式是互补的,设计原则和设计模式互补体现在:设计原则主要用于指导"类的定义"的设计,而设计模式主要用于指导"类的行为"的设计. 举一个很简单的例子:假设我们要设计一个图形类Shape,这个类既支持三角形,