初识设计模式(1)---单例、工厂、注册树
1、单例模式:单例模式是一种常用的软件设计模式。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。
小示例:
1 <?php 2 class DataBase 3 { 4 static $instance = null; 5 6 private function __construct(){//构造方法私有,使外部不能示例 7 } 8 public static function getInstace(){//开放一个接口,让外界获取唯一的实例; 9 if (!self::$instance instanceof self) { 10 self::$instance = new self; 11 } 12 return self::$instance; 13 } 14 15 } 16 ?>
2、工厂模式:是用工厂方法来代替 new 操作,达到封装,以减少修改量。
1 //工厂模式示例 2 //在工厂类里面创建new database类的方法,并返回实例化的对象; 3 <?php 4 class Factory{ 5 static function createDb(){ 6 $db = new DataBase(); 7 return $db; 8 } 9 { 10 ?> 11 12 //使用时直接调用,工厂类的对应方法获得需要类的实例,这样的话后期如果需要修改相应类的名称等,只需修改工厂类中对应方法的new操作; 13 <?php 14 $db = Factory::createDb(); 15 ?>
3、注册树模式,将实例对象放入一个全局数组中,以供直接调用。
如工厂模式中的实例对象,通过注册模式注册在注册树上,使用时直接从注册树上调用
1 <?php 2 //注册树模式简单示例 3 class register{ 4 protected static $objects = array(); 5 //注册到注册树 6 public function set($function,$object){ 7 self::$objects[$function] = $object; 8 } 9 //从注册树调用 10 public function get($function){ 11 return self::objects[$function]; 12 } 13 } 14 ?>