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

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

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();
	}
}




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值