软件设计
子在梦中曰
程序是蓝色的诗
展开
-
工厂方法模式
在之前的项目中,如果需要创建某一类型的类的实例,我通常会专门写一个用来创建该类的类。以下面的例子为例,为了创建BMW和Benz的实例,我通常会建一个类似于CarFactory的类,通过传入一个参数在该类的接口(比如说getInstance)中返回想要创建的类。 这种创建类的方式叫做简单工厂模式。这么做的一个问题是在getInstance中需要加入很多的判断,每增加一种新的类型就需要在switch原创 2016-05-24 14:05:58 · 320 阅读 · 0 评论 -
抽象工厂模式
设计模式入门系列 在我的理解中,抽象工厂模式更像是在工厂方法模式基础上增加了一层。工厂方法模式解决了创建不同的类的问题,抽象工厂模式解决了创建一组相关的类的问题。以下面的代码为例:当客户端在获取一个Conuntry类的时候,还希望能够获取与该Country相关的language类。抽象工厂中包含两个相关类的实现方式,相当于通过抽象工厂描述了这种相关性。<?phpinterface Language原创 2016-05-24 16:29:32 · 334 阅读 · 0 评论 -
原型模式
设计模式入门系列 这段时间看的设计模式,实现上都还可以,但是具体的使用场景总是感觉把握不好。 比如说现在写的原型模式。我现在确实没想到比较好的使用场景,自己想例子也没想出来,所以直接用书上的例子敲了要给demo。<?phpclass Sea { }class EarthSea extends sea { }class MarsSea extends sea { }class Plains { }c原创 2016-05-25 16:59:52 · 280 阅读 · 0 评论 -
单例模式
设计模式入门系列 单例模式保证了在代码中的任何部分引用的都是同一个对象。这样的特性让人很容易想到它的两个用途:1. 节约内存 2. 用来保存一些在代码执行之后不想被释放的数据(比如说统计代码执行次数或者生成某些不能重复的序列号)。但是这最直观的两点在PHP中都不是很容易实现。在每次请求结束之后,PHP的所有资源都会回收。即使是使用最频繁的数据,在一次请求中一般也不会用到太多,节约内存并不明显;又因为原创 2016-05-18 11:02:08 · 349 阅读 · 0 评论 -
使用PHP魔术方法实现属性的set、get方法
之前对PHP中的魔术方法一直有了解,但是对于具体的使用场景则是模模糊糊的。今天了解到了一种使用魔术方法的场景,整理了一下写出来。 假如一个类中具有较多的变量,对于每一个变量编写set/get方法是一件非常繁琐的事情,尤其对于数据库的查询结果,有时候字段可以很多。但是直接让程序调用类中的字段又不被推荐,这时候可以通过对__get、__set和__call方法的使用来解决这个问题。 <?php原创 2017-02-08 15:25:34 · 518 阅读 · 0 评论