简单工厂模式实例与讲解
来源:互联网 发布:递四方 知乎 编辑:程序博客网 时间:2024/05/29 13:17
abstract class ApptEncoder{ abstract function encode();}class BloggsApptEncoder extends ApptEncoder{ function encode(){ return 'this is bloggs object'; }}class MegaApptEncoder extends ApptEncoder{ function encode(){ return 'this is mega object'; }}class CommsManager{ const BLOGGS = 1; const MEAG = 2; private $mode = 1; function __construct($mode){ $this->mode; } function getAppEncoder(){ switch ($this->mode){ case (self::BLOGGS): return new BloggsApptEncoder(); case (self::MEAG): return new MegaApptEncoder(); } }}$comms = new CommsManager(CommsManager::MEAG);$apptEncoder = $comms->getAppEncoder();print_r($apptEncoder->encode()); //输出:this is bloggs object
以上属于典型的简单工厂模式,可以适用于简单的运行模式,存在一定的缺陷,当我们需要在CommsManager中新增一个模式方法时,我们不得不再次进行模式的判断,CommsManager如下(我们新增了getHeaderText):
class CommsManager{ const BLOGGS = 1; const MEAG = 2; private $mode = 1; function __construct($mode){ $this->mode; } function getAppEncoder(){ switch ($this->mode){ case (self::BLOGGS): return new BloggsApptEncoder(); case (self::MEAG): return new MegaApptEncoder(); } } function getHeaderText(){ switch ($this->mode){ case (self::BLOGGS): return 'this is bloggs headerText'; case (self::MEAG): return 'this is meag headerText'; } }}从上面我们可以看出,我们使用了重复的代码判断条件,我们可以对此进行简化和进一步的改进,也就是我们的工厂方法模式
0 0
- 简单工厂模式实例与讲解
- PHP中“简单工厂模式”实例讲解
- PHP中“简单工厂模式”实例讲解
- PHP中“简单工厂模式”实例讲解
- PHP中“简单工厂模式”实例讲解
- PHP中“简单工厂模式”实例讲解
- PHP中“简单工厂模式”实例讲解
- 工厂方法模式实例与讲解
- 抽象工厂模式实例与讲解
- 讲解简单工厂模式
- 实例讲解Java工厂模式
- java工厂模式实例讲解
- 简单工厂模式实例
- 简单工厂模式实例
- 简单工厂模式及实例
- 简单工厂模式及实例
- 简单工厂模式及实例
- java工厂模式简单实例
- Spark修炼之道(基础篇)——Linux大数据开发基础:第十二节:Shell编程入门(四)
- 第八课 MongoDB GridFS
- poj 2965 11/14
- 杭电5500Reorder the Books
- 多线程编程之四——线程的同步
- 简单工厂模式实例与讲解
- 月圆之夜,紫禁之巅,一剑西来,天外飞仙
- c++堆和栈(2)
- Play Framework2.1源码分析 - 架构设计及线程策略分析
- 局部变量、全局变量、堆、堆栈、静态和全局
- 深入学习微框架:Spring Boot
- android内核编译及模拟器运行过程记录
- 隐式数据共享 深拷贝 浅拷贝
- 使用dom4j来解析xml文件的基本操作