基于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 minixml详解
Jul 19 PHP
php str_pad 函数用法简介
Jul 11 PHP
浅析linux下apache服务器的配置和管理
Aug 10 PHP
php构造函数实例讲解
Nov 13 PHP
PHP中static关键字以及与self关键字的区别
Jul 01 PHP
非常全面的php日期时间运算汇总
Nov 04 PHP
PHP中如何防止外部恶意提交调用ajax接口
Apr 11 PHP
Laravel最佳分割路由文件(routes.php)的方式
Aug 04 PHP
Thinkphp连表查询及数据导出方法示例
Oct 15 PHP
php中preg_replace正则替换用法分析【一次替换多个值】
Jan 17 PHP
PHP单元测试框架PHPUnit用法详解
Jan 23 PHP
php的优点总结 php有哪些优点
Jul 19 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数组实例总结与说明
2011/08/23 PHP
使用php测试硬盘写入速度示例
2014/01/27 PHP
PHP进行批量任务处理不超时的解决方法
2016/07/11 PHP
js tab 选项卡
2009/04/26 Javascript
潜说js对象和数组
2011/05/25 Javascript
jquery使用正则表达式验证email地址的方法
2015/01/22 Javascript
JSONObject使用方法详解
2015/12/17 Javascript
JS中JSON对象和String之间的互转及处理技巧
2016/04/06 Javascript
jQuery学习心得总结(必看篇)
2016/06/10 Javascript
Bootstrap响应式导航由768px变成992px的实现代码
2017/06/15 Javascript
IE11下使用canvas.toDataURL报SecurityError错误的解决方法
2017/11/19 Javascript
javaScript日期工具类DateUtils详解
2017/12/08 Javascript
使用vue-cli+webpack搭建vue开发环境的方法
2017/12/22 Javascript
原生JS实现的自动轮播图功能详解
2018/12/28 Javascript
Nuxt.js的路由跳转操作(页面跳转nuxt-link)
2020/11/06 Javascript
[36:19]2018DOTA2亚洲邀请赛 小组赛 A组加赛 Newbee vs LGD
2018/04/03 DOTA
[43:14]Liquid vs Optic 2018国际邀请赛淘汰赛BO3 第二场 8.21
2018/08/22 DOTA
python爬虫教程之爬取百度贴吧并下载的示例
2014/03/07 Python
使用python遍历指定城市的一周气温
2017/03/31 Python
详解python之heapq模块及排序操作
2019/04/04 Python
Python正则表达式实现简易计算器功能示例
2019/05/07 Python
简单了解python中对象的取反运算符
2019/07/01 Python
Python使用py2neo操作图数据库neo4j的方法详解
2020/01/13 Python
python GUI库图形界面开发之PyQt5信号与槽的高级使用技巧(自定义信号与槽)详解与实例
2020/03/06 Python
Python爬虫headers处理及网络超时问题解决方案
2020/06/19 Python
Keras - GPU ID 和显存占用设定步骤
2020/06/22 Python
python os模块在系统管理中的应用
2020/06/22 Python
丝芙兰中国官方商城:SEPHORA中国
2018/01/10 全球购物
Brother加拿大官网:打印机、贴标机、缝纫机
2019/10/09 全球购物
德国BA保镖药房中文网:Bodyguard Apotheke
2021/03/09 全球购物
大学生军训感想
2014/02/16 职场文书
《蓝色的树叶》教学反思
2014/02/24 职场文书
租房协议书范本
2014/04/09 职场文书
员工离职感谢信
2015/01/22 职场文书
2015年度村委会工作总结
2015/04/29 职场文书
2015年美容师个人工作总结
2015/10/14 职场文书