现在的位置: 首页 > 综合 > 正文

PHP设计模式——简单工厂(研磨设计模式学习笔记)

2014年01月29日 ⁄ 综合 ⁄ 共 702字 ⁄ 字号 评论关闭

在没有使用工厂模式时的实现方式:

interface Api {
	public function test1();
}

class Impl implements Api {
	public function test1() {
		
	}
}

class Client {
	public static function main() {
		$api = new Impl;
		$api->test();
	}
}

    面向接口编程面象对象编程的重要思想
       接口的思想: 封闭隔离

       以上实现违背了面象接口编程的思想,因为客户端不但知道了接口,还知道了具体实现。我们要如何隐藏实现呢?一个合理的解决方案就是——简单工厂
简单工厂的定义:
       提供一个创建对象实例的功能,无须关心其具备的实现,被创建的类型可以是接口,也可以是抽象类,还可以是具体的实现。
在之前的代码基础上提供工厂类:
class Factory {
	public static function createApi($condition) {
		$api = null;
		switch($condition) {
			case '1':
				$api = new ImplA;
				break;
			case '2':
				$api = new ImplB;
			
		}
		return $api;
	}
}

class Client {
	public static function main() {
		$api = Factory::createApi(1); 
		$api->test();
	}
}




/**
       理解简单工厂的重要切入点:客户端在使用的时候,不在自己去创建对象,而由工厂去创建对象。客户端不知道知道具体实现是什么?也不知道如何实现,客户端只知道得到了一个实例,从而获得想要的功能。因此达到封闭隔离的效果
*/

抱歉!评论已关闭.