1 设计模式简介
设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的;设计模式使代码编制真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。
2 《设计模式之PHP项目应用》写作背景...
分类:
Web程序 时间:
2015-05-13 16:55:36
阅读次数:
184
1 简单工厂模式简介
简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)的实例。
2 模式组成
1)工厂(Creator)角色
简单工厂模式的核心,它负责实现创建所有实例的内部逻辑。工厂类的创建产品类的方法可以被外界直接调用,创建所需的产品对象。
2)抽象产品(Product)角色
简单...
分类:
Web程序 时间:
2015-05-13 16:55:06
阅读次数:
263
命名空间
可以将 PHP 命名空间与文件系统作一个简单的类比。在文件系统中访问一个文件有三种方式:
1 相对文件名形式如foo.txt。它会被解析为 currentdirectory/foo.txt,其中 currentdirectory 表示当前目录。因此如果当前目录是 /home/foo,则该文件名被解析为/home/foo/foo.txt。
2 相对路径名形式如subdirectory...
分类:
Web程序 时间:
2015-05-05 14:34:24
阅读次数:
179
声明:本系列博客参考资料《大话设计模式》,作者程杰。
装饰器模式又叫装饰者模式。装饰模式是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。
UML类图:
角色:
组件对象的接口:可以给这些对象动态的添加职责
...
分类:
Web程序 时间:
2015-05-03 13:24:23
阅读次数:
169
声明:本系列博客参考资料《大话设计模式》,作者程杰。
组合模式(有时候又叫做部分-整体模式),将对象组合成树形结构以表示“部分整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。它使我们树型结构的问题中,模糊了简单元素和复杂元素的概念,客户程序可以像处理简单元素一样来处理复杂元素,从而使得客户程序与复杂元素的内部结构解耦。
实现类...
分类:
Web程序 时间:
2015-05-02 23:29:35
阅读次数:
191
声明:本系列博客参考资料《大话设计模式》,作者程杰。
桥接模式:在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,那么如何应对这种“多维度的变化”?这就要使用桥接模式——将抽象部分与它的实现部分分离,使他们可以独立地变化。
UML类图:
角色介绍:
抽...
分类:
Web程序 时间:
2015-05-02 20:46:49
阅读次数:
182
声明:本系列博客参考资料《大话设计模式》,作者程杰。
适配器模式(有时候也称包装样式或者包装)将一个类的接口适配成用户所期待的(适配器模式要解决的核心问题)。一个适配允许通常因为接口不兼容而不能在一起工作的类工作在一起,做法是将类自己的接口包裹在一个已存在的类中。
类图:
待适配(ForeignPlayer)角色...
分类:
Web程序 时间:
2015-04-26 15:21:04
阅读次数:
151
声明:本系列博客参考资料《大话设计模式》,作者程杰。
用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。Prototype模式允许一个对象再创建另外一个可定制的对象,根本无需知道任何如何创建的细节,通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建。它主要面对的问题是:“某些结构复杂的对象”的创建工作;由于需求的变化...
分类:
Web程序 时间:
2015-04-25 21:12:40
阅读次数:
209
声明:本系列博客参考资料《大话设计模式》,作者程杰。
常见的面向对象设计模式大约有23种,但是自从接触PHP后,渐渐发现常见的设计模式好像少了很多,网络上的资料也比较少,身边的PHP同事们有的甚至没有听说过设计模式,这也有可能是PHP的发展所带来的,因为PHP对面向对象支持的比较晚,好多PHP程序员还按照面向过程的思想写代码。于是,我决定把原来用C#写的...
分类:
Web程序 时间:
2015-04-06 23:20:13
阅读次数:
242
网上常见的PHP单例模式,都不能复用,也就是说,如果A是单例,我的类B继承A后,要想B也是单例,需要重新写代码,很麻烦。如何让B继承后,也变成单例模式呢?那就进来看看我的分解吧!...