PHP设计模式之工厂方法设计模式实例分析
php  /  管理员 发布于 4年前   409
本文实例讲述了PHP设计模式之工厂方法设计模式。分享给大家供大家参考,具体如下: 一、什么是工厂方法模式 作为一种创建型设计模式,工厂方法模式就是要创建“某种东西”。对于工厂方法,要创建的“东西”是一个产品,这个产品与创建它的类之间不存在绑定。实际上,为了保持这种松耦合,客户会通过一个工厂发出请求,再由工厂创建所请求的产品。利用工厂方法模式,请求者只发出请求,而不具体创建产品。 二、什么时候使用工厂方法模式 如果实例化对象的子类可能改变,就要使用工厂方法模式。 三、一般工厂方法模式 使用一般工厂方法模式时,客户只包含工厂的引用,一个工厂生产一种产品。增加一种产品的同时需要增加一个新工厂类和一个新产品类。 四、参数化工厂方法模式 使用参数化工厂方法模式时,客户包含工厂和产品的引用,发出请求时需要指定产品的种类,一个工厂生产多种产品。增加一种产品时只需要增加一个新产品类即可。 更多关于PHP相关内容感兴趣的读者可查看本站专题:《php面向对象程序设计入门教程》、《PHP数组(Array)操作技巧大全》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》 希望本文所述对大家PHP程序设计有所帮助。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() . '
'; $this->imageFactory = new ImageFactory(); echo $this->imageFactory->startFactory() . '
'; }}$client = new Client();/*运行结果:此处为文本此处为图像*/?>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) . '
'; echo $factory->startFactory($imageProduct) . '
'; }}$client = new Client();/*运行结果:此处为文本此处为图像*/?>您可能感兴趣的文章:
122 在
学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号