PHP笔记: 工厂模式

工厂模式是一种类,建立了一个工厂来根据所需来创建对象,这种方式在多态性编程中是很重要的,允许动态替换...

工厂模式是一种类,建立了一个工厂来根据所需来创建对象,这种方式在多态性编程中是很重要的,允许动态替换类,修改配置等。

image.png

<?php
// 单例模式
class Site{
	// 属性
	public $site;
	// 本类的静态实例
	public static $instance = null;
	// 禁用构造函数
	private function __construct(){}
	// 获取本类的唯一实例
	public static function getInstance($site='demo'){
		if(!self::$instance instanceof self){
			self::$instance = new self();
		}
		return self::$instance;
	}
	public function A($n='demo'){
		return $n;
	}
}

// 工厂模式

class Factory{
	// 创建指定类的实例
	public static function create($name){
		return $name::getInstance();
	}
}

// 对象注册树
// 1.注册:set(),把对象挂到树上
// 2.获取:get(),把对象取下来
// 3.销毁:_unset(),把对象销毁
class Register{
	// 对象池属性
	public static $objs = [];
	// 生成对象并上树
	public static function set($alias,$obj){
		self::$objs[$alias] = $obj;
	}
	// 取下对象
	public static function get($alias){
		return self::$objs[$alias];
	}
	// 
	public static function _unset($alias){
		unset(self::$objs[$alias]);
	}
}

Register::set('site',Factory::create('Site'));
$obj = Register::get('site');
var_dump($obj->A('1234'));


评论