基于php设计模式中工厂模式详细介绍


Posted in PHP onMay 15, 2013

工厂模式:由工厂类根据参数来决定创建出哪一种产片类的实例
工厂类:一个专门用来创建其他对象的方法类。即按需分配,传入参数进行选择,返回具体的类
作用:对象创建的封装、简化创建对象的操作,即调用工厂类的一个方法来得到需要的类
补充:
1.主要角色
:抽象产品(Product)、具体产品(Concrete Product)、抽象工厂角色(Creator)
2.优缺点
    优点:工厂方法模式可以允许系统在不修改工厂角色的情况下引进心产品
    缺点:客户可能仅仅为了创建一个特定的Concrete Product对象,就不得不创建一个Creator子类
3.适用性
    当一个类不知道它所必须创建的对象的时候
    当一个类希望由它的子类来制定它所创建的对象的时候
    当一个类将创建对象的职责委托给多个帮助子类的某一个,并且希望你将哪一个帮助子类是代理这一信息局部化的时候

<?php 
//对象 
class MyObject{ 
    public function __construct(){} 
    public function test(){ 
        return 'test'; 
    } 
} 
//工厂 
class MyFactory{ 
    public static function factory(){ 
        return new MyObject(); 
    } 
} $myObject = MyFactory::factory(); 
echo $myObject->test(); 
?> 
 

?<?php 
//抽象类 定义属性及抽象方法 
abstract class Operation{ 
    protected $_NumberA = 0; 
    protected $_NumberB = 0; 
    protected $_Result= 0; 
    public function __construct($A,$B){ 
        $this->_NumberA = $A; 
        $this->_NumberB = $B; 
    } 
    public function setNumber($A,$B){ 
        $this->_NumberA = $A; 
        $this->_NumberB = $B; 
    } 
    public function clearResult(){ 
        $this->_Result = 0; 
    } 
    abstract protected function getResult(); 
} 
//操作类 
class OperationAdd extends Operation{ 
    public function getResult(){ 
        $this->_Result = $this->_NumbserA + $this->_NumberB; 
        return $this->_Result; 
    } 
} 
class OperationSub extends Operation{ 
    public function getResult(){ 
        $this->_Result = $this->_NumberA - $this->_NumberB; 
        return $this->_Result; 
    } 
} 
………… 
//工厂类 
class OperationFactory{ 
    private static $obj; 
    public static function CreationOperation($type,$A,$B){ 
        switch($type){ 
            case '+': 
                self::$obj = new OperationAdd($A,$B); 
                break; 
            case '-': 
                self::$obj = new OperationSub($A,$B); 
                break; 
            …… 
        } 
    } 
} 
//操作 
$obj = OperationFactory:: CreationOperation('+',5,6); 
echo $obj-> getResult(); 
?>
PHP 相关文章推荐
Ajax+PHP 边学边练 之二 实例
Nov 24 PHP
php 一元分词算法
Nov 30 PHP
又一个php 分页类实现代码
Dec 03 PHP
linux系统上支持php的 iconv()函数的方法
Oct 01 PHP
php数组函数序列之array_pop() - 删除数组中的最后一个元素
Nov 07 PHP
国外十大最流行的PHP框架排名
Jul 04 PHP
php网页病毒清除类
Dec 08 PHP
WordPres对前端页面调试时的两个PHP函数使用小技巧
Dec 22 PHP
PHP根据树的前序遍历和中序遍历构造树并输出后序遍历的方法
Nov 10 PHP
PHP实现的折半查找算法示例
Dec 19 PHP
PHP unlink与rmdir删除目录及目录下所有文件实例代码
Feb 07 PHP
php使用goto实现自动重启swoole、reactphp、workerman服务的代码
Apr 13 PHP
php笔记之:数据类型与常量的使用分析
May 14 #PHP
PHP笔记之:基于面向对象设计的详解
May 14 #PHP
php在window iis的莫名问题的测试方法
May 14 #PHP
PHP处理excel cvs表格的方法实例介绍
May 13 #PHP
PHP 处理TXT文件(打开/关闭/检查/读取)
May 13 #PHP
基于wordpress主题制作的具体实现步骤
May 10 #PHP
php Hex RGB颜色值互换的使用
May 10 #PHP
You might like
php判断正常访问和外部访问的示例
2014/02/10 PHP
PHP设计模式之观察者模式(Observer)详细介绍和代码实例
2014/04/08 PHP
ThinkPHP CURD方法之where方法详解
2014/06/18 PHP
Thinkphp关闭缓存的方法
2015/06/26 PHP
PHP基于单例模式编写PDO类的方法
2016/09/13 PHP
Laravel框架控制器,视图及模型操作图文详解
2019/12/04 PHP
Mootools 1.2教程(2) DOM选择器
2009/09/14 Javascript
数组Array进行原型prototype扩展后带来的for in遍历问题
2010/02/07 Javascript
javascript按位非运算符的使用方法
2013/11/14 Javascript
JavaScript function 的 length 属性使用介绍
2014/09/15 Javascript
node.js中的console.log方法使用说明
2014/12/09 Javascript
jquery实现点击展开列表同时隐藏其他列表
2015/08/10 Javascript
jQuery Validate初步体验(二)
2015/12/12 Javascript
js实现div模拟模态对话框展现URL内容
2016/05/27 Javascript
AngularJS实现按钮提示与点击变色效果
2016/09/07 Javascript
jQuery插件echarts去掉垂直网格线用法示例
2017/03/03 Javascript
详谈Angular 2+ 的表单(一)之模板驱动型表单
2017/04/25 Javascript
微信小程序左滑删除功能开发案例详解
2018/11/12 Javascript
浅谈 Webpack 如何处理图片(开发、打包、优化)
2019/05/15 Javascript
微信小程序表单验证WxValidate的使用
2019/11/27 Javascript
JavaScript设计模型Iterator实例解析
2020/01/22 Javascript
Javascript基于OOP实实现探测器功能代码实例
2020/08/26 Javascript
python实现数据图表
2017/07/29 Python
Python 文件操作的详解及实例
2017/09/18 Python
Python实现线性判别分析(LDA)的MATLAB方式
2019/12/09 Python
生物技术专业研究生自荐信
2013/09/22 职场文书
考试不及格的检讨书
2014/01/22 职场文书
公司捐款倡议书
2014/05/14 职场文书
党的群众路线教育实践活动制度建设计划方案
2014/10/31 职场文书
2014年库房工作总结
2014/11/26 职场文书
中学生综合素质自我评价
2015/03/06 职场文书
共青团员自我评价
2015/03/10 职场文书
毕业论文致谢部分怎么写
2015/05/14 职场文书
互联网的下一个风口:新的独角兽将诞生
2019/08/02 职场文书
Python爬虫之用Xpath获取关键标签实现自动评论盖楼抽奖(二)
2021/06/07 Python
python使用BeautifulSoup 解析HTML
2022/04/24 Python