PHP中常用的设计模式有单例模式、工厂模式(简单工厂模式、工厂方法模式和抽象工厂方法模式)、适配模式、策略模式。
单例模式用于在程序中创建一个单一功能的访问点,简单说就是实例的对象是唯一的。因此有几点需要注意:
1、需定义一个构造器,且构造器的作用域需定义为private,即无法在其他调用中直接new一个对象
2、需定义一个静态变量,当作被调用类的实例对象
3、需定义一个静态方法,用于外部调用获取该类的实例静态对象,在这个方法中,返回一个对象引用
例子:
public class School{
private static $school; //定义一个静态私有变量,用于存储该类中唯一一个实例对象;
private function __constrcut(){} //定义私有构造器,防止外部调用时实例化该类
public static function getInstance(){ //使用getInstance()创建对象
if(empty(self::$school)){self::$school = new self();}
return self::$school; //往外部调用返回此类的唯一对象引用
}
}
工厂模式是一个类,通过调用该类获取某些类的实例对象,而不需要在方法中直接new一个对象,好处是单一控制对象,避免出现修改对象类型时,遗漏修改调用的地方。只需要通过修改工厂类中的对象,则调用工厂类的所有地方就自动修改了
例子:
定义一个类,在里面定义一个方法,通过传入不同的参数, 获取不同类的对象
public class School{
public static function getObject($objectName){
switch ($objectName){
case 1 : return One::getInstance();break;
case 2 : return new A();break;
case 3 : return new B();break;
}
}
}