php设计模式 — 简单工厂模式(静态工厂方法模式),php设计模式概念简单工厂模式 【静态工厂方法模式】(static factory method)
是类的创建模式
工厂模式的几种形态:
1、简单工厂模式(simple factory) |又叫做 静态工厂方法模式(static factory method)
2、工厂方法模式(factory method) |又叫做 多态性工厂模式(polymorphic factory)
3、抽象工厂模式(abstract factory) |又叫做 工具箱模式(toolkit)
配图
代码实例直接将代码运行即可,都是测试过的
1 treeage; 76 } 77 78 //设置苹果树的年龄 79 public function settreeage($age){ 80 $this->treeage = $age; 81 return trie; 82 } 83 84 } 85 86 /** 87 * 定义具体产品类 葡萄 88 * 首先,我们要实现所继承的接口所定义的方法 89 * 然后定义葡萄所特有的属性,以及方法 90 */ 91 class grape implements fruit{ 92 93 94 //葡萄是否有籽 95 private $seedless; 96 97 public function grow(){ 98 echo apple grow; 99 }100 101 public function plant(){102 echo apple plant;103 }104 105 public function harvest(){106 echo apple harvest;107 }108 109 public function eat(){110 echo apple eat;111 }112 113 //有无籽取值114 public function getseedless(){115 return $this->seedless;116 }117 118 //设置有籽无籽119 public function setseedless($seed){120 $this->seedless = $seed;121 return true;122 }123 124 }125 126 127 /**128 *农场主类 用来获取实例化的水果129 *130 */131 class farmer{132 133 //定义个静态工厂方法134 public static function factory($fruitname){135 switch ($fruitname) {136 case 'apple':137 return new apple();138 break;139 case 'grape':140 return new grape();141 break;142 default:143 throw new badfruitexception(error no the fruit, 1);144 break;145 }146 }147 }148 149 class badfruitexception extends exception{150 public $msg;151 public $errtype;152 public function __construct($msg = '' , $errtype = 1){153 $this->msg = $msg;154 $this->errtype = $errtype;155 } 156 }157 158 159 /**160 * 获取水果实例化的方法161 */162 try{163 $appleinstance = farmer::factory('apple');164 var_dump($appleinstance);165 }catch(badfruitexception $err){166 echo $err->msg . _______ . $err->errtype;167 }
php设计模式: 写出工厂模式与单态模式的php5示例代码
example #1 调用工厂方法(带参数)
------------------------------------
example #2 单例模式
简单工厂模式与工厂方法模式的相同点与不同点?
建议lz把简单工厂,工厂方法和抽象工厂一起研究下,呵呵,前一段我老师让我研究下这3种模式的不同,一起学习可能更明白了。
简单工厂模式又称静态工厂方法模式。重命名上就可以看出这个模式一定很简单。它存在的目的很简单:定义一个用于创建对象的接口。
先来看看它的组成:
1)工厂类角色:这是本模式的核心,含有一定的商业逻辑和判断逻辑。在java中它往往由一个具体类实现。
2)抽象产品角色:它一般是具体产品继承的父类或者实现的接口。在java中由接口或者抽象类来实现。
3)具体产品角色:工厂类所创建的对象就是此角色的实例。在java中由一个具体类实现。
工厂方法模式去掉了简单工厂模式中工厂方法的静态属性,使得它可以被子类继承。这样在简单工厂模式里集中在工厂方法上的压力可以由工厂方法模式里不同的工厂子类来分担。
看下它的组成:
1)抽象工厂角色: 这是工厂方法模式的核心,它与应用程序无关。是具体工厂角色必须实现的接口或者必须继承的父类。在java中它由抽象类或者接口来实现。
2) 具体工厂角色:它含有和具体业务逻辑有关的代码。由应用程序调用以创建对应的具体产品的对象。
3)抽象产品角色:它是具体产品继承的父类或者是实现的接口。在java中一般有抽象类或者接口来实现。
4)具体产品角色:具体工厂角色所创建的对象就是此角色的实例。在java中由具体的类来实现。
http://www.bkjia.com/phpjc/873921.htmlwww.bkjia.comtruehttp://www.bkjia.com/phpjc/873921.htmltecharticlephp设计模式 — 简单工厂模式(静态工厂方法模式),php设计模式 概念 简单工厂模式 【静态工厂方法模式】(static factory method) 是类的创建模式...