PHP设计模式之工厂方法设计模式实例分析
网络编程 2021-07-05 08:24www.168986.cn编程入门
这篇文章主要介绍了PHP设计模式之工厂方法设计模式,结合实例形式分析了工厂方法设计模式的概念、原理以及php一般工厂方法模式与参数化工厂方法模式具体实现技巧,需要的朋友可以参考下
本文实例讲述了PHP设计模式之工厂方法设计模式。分享给大家供大家参考,具体如下
一、什么是工厂方法模式
作为一种创建型设计模式,工厂方法模式就是要创建“某种东西”。对于工厂方法,要创建的“东西”是一个产品,这个产品与创建它的类之间不存在绑定。实际上,为了保持这种松耦合,客户会通过一个工厂发出请求,再由工厂创建所请求的产品。利用工厂方法模式,请求者只发出请求,而不具体创建产品。
二、什么时候使用工厂方法模式
如果实例化对象的子类可能改变,就要使用工厂方法模式。
三、一般工厂方法模式
使用一般工厂方法模式时,客户只包含工厂的引用,一个工厂生产一种产品。增加一种产品的需要增加一个新工厂类和一个新产品类。
<?php / 一般工厂方法设计模式 / //工厂抽象类 abstract class Factory { protected abstract function produce(); public function startFactory() { $pro = $this->produce(); return $pro; } } //文本工厂 class TextFactory extends Factory { protected function produce() { $textProduct = new TextProduct(); return $textProduct->getProperties(); } } //图像工厂 class ImageFactory extends Factory { protected function produce() { $imageProduct = new ImageProduct(); return $imageProduct->getProperties(); } } //产品类接口 interface Product { public function getProperties(); } //文本产品 class TextProduct implements Product { private $text; function getProperties() { $this->text = "此处为文本"; return $this->text; } } //图像产品 class ImageProduct implements Product { private $image; function getProperties() { $this->image = "此处为图像"; return $this->image; } } //客户类 class Client { private $textFactory; private $imageFactory; public function __construct() { $this->textFactory = new TextFactory(); echo $this->textFactory->startFactory() . '<br />'; $this->imageFactory = new ImageFactory(); echo $this->imageFactory->startFactory() . '<br />'; } } $client = new Client(); /运行结果 此处为文本 此处为图像 / ?>
四、参数化工厂方法模式
使用参数化工厂方法模式时,客户包含工厂和产品的引用,发出请求时需要指定产品的种类,一个工厂生产多种产品。增加一种产品时只需要增加一个新产品类即可。
<?php / 参数化工厂方法设计模式 / //工厂抽象类 abstract class Factory { protected abstract function produce(Product $product); public function startFactory(Product $product) { $pro = $this->produce($product); return $pro; } } //工厂实现 class ConcreteFactory extends Factory { protected function produce(Product $product) { return $product->getProperties(); } } //产品类接口 interface Product { public function getProperties(); } //文本产品 class TextProduct implements Product { private $text; public function getProperties() { $this->text = "此处为文本"; return $this->text; } } //图像产品 class ImageProduct implements Product { private $image; public function getProperties() { $this->image = "此处为图像"; return $this->image; } } //客户类 class Client { private $factory; private $textProduct; private $imageProduct; public function __construct() { $factory = new ConcreteFactory(); $textProduct = new TextProduct(); $imageProduct = new ImageProduct(); echo $factory->startFactory($textProduct) . '<br />'; echo $factory->startFactory($imageProduct) . '<br />'; } } $client = new Client(); /运行结果 此处为文本 此处为图像 / ?>
更多关于PHP相关内容感兴趣的读者可查看本站专题《》、《》、《》、《》、《》、《》及《》
希望本文所述对大家PHP程序设计有所帮助。
编程语言
- 如何快速学会编程 如何快速学会ug编程
- 免费学编程的app 推荐12个免费学编程的好网站
- 电脑怎么编程:电脑怎么编程网咯游戏菜单图标
- 如何写代码新手教学 如何写代码新手教学手机
- 基础编程入门教程视频 基础编程入门教程视频华
- 编程演示:编程演示浦丰投针过程
- 乐高编程加盟 乐高积木编程加盟
- 跟我学plc编程 plc编程自学入门视频教程
- ug编程成航林总 ug编程实战视频
- 孩子学编程的好处和坏处
- 初学者学编程该从哪里开始 新手学编程从哪里入
- 慢走丝编程 慢走丝编程难学吗
- 国内十强少儿编程机构 中国少儿编程机构十强有
- 成人计算机速成培训班 成人计算机速成培训班办
- 孩子学编程网上课程哪家好 儿童学编程比较好的
- 代码编程教学入门软件 代码编程教程