工作不算忙,抽空看看设计模式的书,下了一本《大话设计模式》
抽空读读,理解下思想。由于随书附带的源代码非PHP版,所以将部分内容用PHP作了下测试,并附上源代码!
希望多各位PHP同行有所帮助!高手勿拍!
附件:
第一部分:简单工厂模式
简单理解就是在基本的OO时,通过增加模式工厂,来实现对不同类的实例化。从而实现代码类的松耦合。
第二部分:策略模式
看到策略模式可能会跟工厂模式混淆,这个不是很好理解。
个人看法简单解释下,希望帮助大家理解:
这个对于PHP开发的人来说似乎还是很难理解,我觉得主要是由于PHP本身的弱类型造成的,开发PHP的时候,当用一个变量的时候,不需要定义,导致大家很难区分这两种模式。
简单工厂模式: 从具有众多不同功能的对象中,实例化一个我们需要的功能的对象。
我们在实例化之前,要先知道实例化的对象类型。
我们先知道A1、A2、A3我们需要的那个,然后通过工厂建造一个对应的对象。
策略模式: 通过实例化一个功能对象来实例化一个我们之前定义好的对象。
在实例化之前,我们必须用统一的对象做为参数处理。
我们不能通过A1、A2、A3来操作,必须用A来实现,这时候就需要对A来进行策略模式。
源代码:大话设计模式-策略模式PHP源码
注:希望大家看看PHP5之后抽象类的说明!
第三部分:单一职责原则
这部分不涉及代码,只是简单的思想。
单一职责就是一个类只实现一类职责。其实这个很容易理解了,但是为了更好的理解,举个简单的小例子吧,书上的例子就不拿来重复说了。
例:一个士兵在一张地图上行走。
简单理解,我们需要基础的2个对象,一个士兵对象,一个地图对象。
士兵的移动应该放到士兵还是地图中呢?也许都可以,但是一旦移动发生变化,比如由原来的一次移动一步变成一次移动两步,可能移动的算法就要发生改变了。
所以,还是将移动单独来作为一个对象处理。
例子很简单,抛砖引玉而已!
第四部分:开放-封闭原则
这部分不涉及代码,简单的思想。
在设计出去,将可能发生改变的部分从对象中分离出来,从而保证该对象尽可能少的发生更改。
不多说了,结合书上内容和第一部分例子理解该原则。
第五部分:依赖倒转原则
这个部分同样涉及代码。
依赖倒转:主要思想就是父类不要依赖子类,且子类可以完全继承父类的属性和方法。
高级类和低级类之间最好不存在依赖关系,如需有依赖关系,要通过接口的方式来实现。
接口即为两个类之间的依赖标准,通过接口将两个类衔接起来。