基于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 相关文章推荐
php 实现进制转换(二进制、八进制、十六进制)互相转换实现代码
Oct 22 PHP
分享一个PHP数据流应用的简单例子
Jun 01 PHP
PHP 正则表达式之正则处理函数小结(preg_match,preg_match_all,preg_replace,preg_split)
Oct 05 PHP
解析mysql 表中的碎片产生原因以及清理
Jun 22 PHP
PHP中使用smarty生成静态文件的例子
Apr 24 PHP
php通过ajax实现双击table修改内容
Apr 28 PHP
PHP MySql增删改查的简单实例
Jun 21 PHP
Yii基于CActiveForm的Ajax数据验证用法示例
Jul 14 PHP
PHP未登录自动跳转到登录页面
Dec 21 PHP
利用PHP访问MySql数据库的逻辑操作以及增删改查的实例讲解
Aug 30 PHP
Laravel timestamps 设置为unix时间戳的方法
Oct 11 PHP
PHP设计模式(七)组合模式Composite实例详解【结构型】
May 02 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 字符串加密函数(在指定时间内加密还原字符串,超时无法还原)
2010/04/28 PHP
php教程 插件机制在PHP中实现方案
2012/11/02 PHP
PHP时间和日期函数详解
2015/05/08 PHP
php实现留言板功能(会话控制)
2017/05/23 PHP
php模拟post提交请求调用接口示例解析
2020/08/07 PHP
js的event详解。
2006/09/06 Javascript
JQuery for与each性能比较分析
2013/05/14 Javascript
js控制input输入字符解析
2013/12/27 Javascript
js获取ajax返回值代码
2014/04/30 Javascript
jQuery插件制作之全局函数用法实例
2015/06/01 Javascript
javascript封装简单实现方法
2015/08/11 Javascript
js省市联动效果完整实例代码
2015/12/09 Javascript
第一次接触JS require.js模块化工具
2016/04/17 Javascript
jQuery使用serialize()表单序列化时出现中文乱码问题的解决办法
2016/07/27 Javascript
第一次动手实现bootstrap table分页效果
2016/09/22 Javascript
ajax的分页查询示例(不刷新页面)
2017/01/11 Javascript
ionic2屏幕适配实现适配手机、平板等设备的示例代码
2017/08/11 Javascript
集合Bootstrap自定义confirm提示效果
2017/09/19 Javascript
vue中$refs的用法及作用详解
2018/04/24 Javascript
详解JS实现简单的时分秒倒计时代码
2019/04/25 Javascript
Vue学习之组件用法实例详解
2020/01/06 Javascript
简单了解常用的JavaScript 库
2020/07/16 Javascript
vue组件讲解(is属性的用法)模板标签替换操作
2020/09/04 Javascript
[01:06:43]完美世界DOTA2联赛PWL S3 PXG vs GXR 第二场 12.19
2020/12/24 DOTA
Python中unittest用法实例
2014/09/25 Python
python生成圆形图片的方法
2020/03/25 Python
Django xadmin安装及使用详解
2020/10/26 Python
Hobbs官方网站:英国奢华女性时尚服装
2020/02/22 全球购物
物理系毕业生自荐信
2013/11/01 职场文书
通信工程毕业生自荐信
2013/11/01 职场文书
政府四风问题整改措施
2014/10/04 职场文书
事业单位个人总结
2015/02/12 职场文书
2015年高校辅导员工作总结
2015/04/20 职场文书
校运会新闻稿
2015/07/17 职场文书
你会写请假条吗?
2019/06/26 职场文书
Java实战之课程信息管理系统的实现
2022/04/01 Java/Android