设计模式遵循的六大原则

设计模式遵循的六大原则

1、咱们首先来了解一下设计模式所遵循的六大原则
1.单一职责原则
(1)定义:不要存在多于一个致使类变动的缘由。通俗的说,即一个类只负责一项职责。
(2)遵循单一职责原的优势有:php

能够下降类的复杂度,一个类只负责一项职责,其逻辑确定要比负责多项职责简单的多;程序员

提升类的可读性,提升系统的可维护性;编程

变动引发的风险下降,变动是必然的,若是单一职责原则遵照的好,当修改一个功能时,能够显著下降对其余功能的影响。
2.里氏替换原则设计模式

定义1:若是对每个类型为 T1的对象 o1,都有类型为 T2 的对象o2,使得以 T1定义的全部程序 P 在全部的对象 o1 都代换成 o2 时,程序 P 的行为没有发生变化,那么类型 T2 是类型 T1 的子类型。框架

定义2:全部引用基类的地方必须能透明地使用其子类的对象。函数

子类能够实现父类的抽象方法,但不能覆盖父类的非抽象方法。spa

子类中能够增长本身特有的方法。设计

当子类的方法重载父类的方法时,方法的前置条件(即方法的形参)要比父类方法的输入参数更宽松。对象

当子类的方法实现父类的抽象方法时,方法的后置条件(即方法的返回值)要比父类更严格。
3.依赖倒置原则
定义:高层模块不该该依赖低层模块,两者都应该依赖其抽象;抽象不该该依赖细节;细节应该依赖抽象。
传递依赖关系有三种方式,以上的例子中使用的方法是接口传递,另外还有两种传递方式:构造方法传递和setter方法传递,相信用过Spring框架的,对依赖的传递方式必定不会陌生。继承

在实际编程中,咱们通常须要作到以下3点:

低层模块尽可能都要有抽象类或接口,或者二者都有。

变量的声明类型尽可能是抽象类或接口。

使用继承时遵循里氏替换原则。

依赖倒置原则的核心就是要咱们面向接口编程,理解了面向接口编程,也就理解了依赖倒置。

4.接口隔离原则
定义:客户端不该该依赖它不须要的接口;一个类对另外一个类的依赖应该创建在最小的接口上。

用接口隔离原则对接口进行约束时,要注意如下几点:

接口尽可能小,可是要有限度。对接口进行细化能够提升程序设计灵活性是不挣的事实,可是若是太小,则会形成接口数量过多,使设计复杂化。因此必定要适度。

为依赖接口的类定制服务,只暴露给调用的类它须要的方法,它不须要的方法则隐藏起来。只有专一地为一个模块提供定制服务,才能创建最小的依赖关系。

提升内聚,减小对外交互。使接口用最少的方法去完成最多的事情。

运用接口隔离原则,必定要适度,接口设计的过大或太小都很差。设计接口的时候,只有多花些时间去思考和筹划,才能准确地实践这一原则。

5.迪米特法则
定义:一个对象应该对其余对象保持最少的了解。
在采用迪米特法则时要反复权衡,既作到结构清晰,又要高内聚低耦合。
6.开闭原则
定义:一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。
开闭原则是面向对象设计中最基础的设计原则,它指导咱们如何创建稳定灵活的系统。开闭原则多是设计模式六项原则中定义最模糊的一个了,它只告诉咱们对扩展开放,对修改关闭,但是到底如何才能作到对扩展开放,对修改关闭,并无明确的告诉咱们。之前,若是有人告诉我“你进行设计的时候必定要遵照开闭原则”,我会觉的他什么都没说,但貌似又什么都说了。由于开闭原则真的太虚了。
开闭比原则也就是对一些扩展能够进行编辑而系统的核心包内容不容许被编辑
2、设计模式
设计模式默认,也就是遵循六大原则的,可是咱们操做过程当中还须要注意
什么是设计模式?
               设计模式(Design pattern)是一套被反复使用、多数人知晓的、通过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的;设计模式使代码编制真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构同样。
设计模式的特色:

    (1) 在特定的场景下有可重用性,对相同类型不一样问题的环境,其解决方案都有效。

    (2) 可传授性,即问题出现的机会不少,解决问题的方案相同,人们相对能够接受。

    (3) 有表示模式的名称。

设计模式主要有如下做用:

    (1)  重用设计,重用设计比重用代码更有意义,它会自动带来代码的重用。

    (2) 为设计提供共用的词汇,每一个模式名就是一个设计词汇,其概念使得程序员间的交流更加方便。

    (3) 在开发文档中采用模式词汇可让其余人更容易理解你的想法,理解为何你会这样作,你都作了些什么。编写开发文档也更加容易。

    (4) 应用设计模式可让重构系统变得容易,可确保开发正确的代码,并下降在设计或实现中出现错误的可能性,还能够为重写其余应用程序提供很好的系统框架。

    (5) 正确使用设计模式,能够节省大量的时间。
3、咱们将一些设计模式运用到咱们熟悉的框架中--->Thinkphp
下面是一个简单的小例子,用设计模式来帮咱们实现奇数偶数和特殊元素0的判断
1.首先,咱们须要在咱们的控制器中编写,导入咱们所须要的一些类,实例化咱们的类而且调用咱们类中的方法

2.类Zhizheall.class.php文件中的东西,用来做为一个基类,我想基类对于一个php程序员来讲应该是很是熟悉了.

下面只是作了一些判断及实现不一样的效果,三个程序大体相同,只是判断条件不一样,调用的类不同而已.
3.类Zhizhezero.class.php中咱们用来作特殊的判断

4.文件Zhizheodd.class.php中咱们用来作奇数的判断

5.文件Zhizheeven.class.php中咱们用来作偶数的判断

结果:

这样咱们就将设计模式运用到咱们熟悉的框架中。

相关文章
相关标签/搜索