本文目录一览:
什么是PHP中的工厂设计模式
工厂模式分为三种:简单工厂、工厂方法、抽象工厂 ,三种工厂的区别是,抽象工厂由多条产品线,而工厂方法只有一条产品线,是抽象工厂的简化。而工厂方法和简单工厂相对,大家初看起来好像工厂方法增加了许多代码但是实现的功能和简单工厂一样。但本质是,简单工厂并未严格遵循设计模式的开闭原则,当需要增加新产品时也需要修改工厂代码。但是工厂方法则严格遵守开闭原则,模式只负责抽象工厂接口,具体工厂交给客户去扩展。在分工时,核心工程师负责抽象工厂和抽象产品的定义,业务工程师负责具体工厂和具体产品的实现。只要抽象层设计的好,框架就是非常稳定的。
PHP怎么实现工厂模式?
?php
/**
* 单例模式和工厂模式
*
* 保证一个类仅有一个实例,并提供一个访问它的全局访问点
*
*/
class Singleton
{
static private $_instance = null;
private function __construct()
{
}
static public function getInstance($class='')
{
if(empty($class)){
if(is_null(self::$_instance)) {
self::$_instance = new Singleton();
}
return self::$_instance;
}else{
static $class_object=array();
if(empty($class_object[$class])){
include dirname(__FILE__).'/includes/classes/'.$class.'.class.php';
$class_object[$class]=new $class();
}
return $class_object[$class];
}
}
public function display()
{
echo "it is a singlton class function";
}
}
// $obj = new Singleton(); // 声明不能成功
$obj = Singleton::getInstance();
var_dump($obj);
$obj-display();
$obj1 = Singleton::getInstance();
var_dump(($obj === $obj1));
什么是php工厂模式
工厂模式使用时,返回的对象之间没有关系。单例模式返回始终是同一个对象。可以在代码的定义明显的区分出来,单例模式的构造函数 一般是私有的,不允许实例化,通过内部静态方法实例化自己,同类型的对象始终返回同一个。