PHP 面向对象程序设计(oop)学习笔记(三) - 单例模式和工厂模式
毫无疑问,设计模式于己于他人于系统都是多赢的;设计模式使代码编制真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。
单例模式
当需要保证某个对象只能有一个实例的时候,单例模式非常有用。它把创建对象的控制权委托到一个单一的点上,任何时候应用程序都只会仅有一个实例存在。单例类不应该可以在类的外部进行实例化一个单例类应该具备以下几个要素。
必须拥有一个访问级别为private的构造函数,有效防止类被随意实例化。
必须拥有一个保存类的实例的静态变量。
必须拥有一个访问这个实例的公共的静态方法,该方法通常被命名为GetInstance()。
必须拥有一个私有的空的__clone方法,防止实例被克隆复制。
下面用一个简单的单例类的例子来说明
classClassName { publicstatic$_instance; privatefunction__construct() { #code... } privatefunction__clone() { #empty } publicstaticfunctionGetInstance() { if(!(self::$_instanceinstanceofself)) { self::$_instance=newself(); } returnself::$_instance; } publicfunctionSayHi() { echo"Hiboy!"; } } $App=ClassName::GetInstance(); $App->SayHi();
/** * *Output * *Hiboy! * */