工作不算忙,抽空看看设计模式的书,下了一本《大话设计模式》

抽空读读,理解下思想。由于随书附带的源代码非PHP版,所以将部分内容用PHP作了下测试,并附上源代码!

希望多各位PHP同行有所帮助!高手勿拍!

附件:

大话设计模式(带目录完整版).pdf

大话模式源代码.rar


第一部分:简单工厂模式

简单理解就是在基本的OO时,通过增加模式工厂,来实现对不同类的实例化。从而实现代码类的松耦合。

源码:大话设计模式-简单工厂模式PHP源码

第二部分:策略模式

看到策略模式可能会跟工厂模式混淆,这个不是很好理解。

个人看法简单解释下,希望帮助大家理解:

这个对于PHP开发的人来说似乎还是很难理解,我觉得主要是由于PHP本身的弱类型造成的,开发PHP的时候,当用一个变量的时候,不需要定义,导致大家很难区分这两种模式。

简单工厂模式: 从具有众多不同功能的对象中,实例化一个我们需要的功能的对象。

我们在实例化之前,要先知道实例化的对象类型。

我们先知道A1、A2、A3我们需要的那个,然后通过工厂建造一个对应的对象。

策略模式: 通过实例化一个功能对象来实例化一个我们之前定义好的对象。

在实例化之前,我们必须用统一的对象做为参数处理。

我们不能通过A1、A2、A3来操作,必须用A来实现,这时候就需要对A来进行策略模式。

源代码:大话设计模式-策略模式PHP源码

注:希望大家看看PHP5之后抽象类的说明!

第三部分:单一职责原则

这部分不涉及代码,只是简单的思想。

单一职责就是一个类只实现一类职责。其实这个很容易理解了,但是为了更好的理解,举个简单的小例子吧,书上的例子就不拿来重复说了。

例:一个士兵在一张地图上行走。

简单理解,我们需要基础的2个对象,一个士兵对象,一个地图对象。

士兵的移动应该放到士兵还是地图中呢?也许都可以,但是一旦移动发生变化,比如由原来的一次移动一步变成一次移动两步,可能移动的算法就要发生改变了。

所以,还是将移动单独来作为一个对象处理。

例子很简单,抛砖引玉而已!

第四部分:开放-封闭原则

这部分不涉及代码,简单的思想。

在设计出去,将可能发生改变的部分从对象中分离出来,从而保证该对象尽可能少的发生更改。

不多说了,结合书上内容和第一部分例子理解该原则。

第五部分:依赖倒转原则

这个部分同样涉及代码。

依赖倒转:主要思想就是父类不要依赖子类,且子类可以完全继承父类的属性和方法。

高级类和低级类之间最好不存在依赖关系,如需有依赖关系,要通过接口的方式来实现。

接口即为两个类之间的依赖标准,通过接口将两个类衔接起来。