php之工厂模式

工厂类是指包含一个专门用来创建其他对象的方法的类,工厂类在多态性编程实践中是至关重要的,它允许动态的替换类,修改配置,通常会使应用程序更加灵活,熟练掌握工厂模式高级PHP开发人员是很重要的。

   工厂模式通常用来返回符合类似接口的不同的类,工厂的一种常见用法就是创建多态的提供者,从而允许我们基于应用程序逻辑或者配置设置来决定应实例化哪一个类,例如,可以使用这样的提供者来扩展一个类,而不需要重构应用程序的其他部分,从而使用新的扩展后的名称。
 
   通常,工厂模式有一个关键的构造,根据一般原则命名为Factory的静态方法,然而这只是一种原则,工厂方法可以任意命名,这个静态还可以接受任意数据的参数,必须返回一个对象。
 
下面是我自己写的两个工厂实例,有什么不足的地方,希望大家能够多多提点意见
 
第一个:
 

<?php

//抽象一个父亲类
abstract class Parents{
public abstract function show();
}

//儿子继承父亲
class Sons extends Parents{
public function show(){
echo "I'm son";
}
}

//女儿继承父亲
class Girls extends Parents{
public function show(){
echo "I'm girls";
}
}

//创造子女
class Factory{
protected $obj=array();
public function create($parents){
$this->obj[]=new $parents();
}
public function show(){
foreach($this->obj as $par){
$par->show();
}
}
}
$par=new Factory();

//生出儿子
$par->create("Sons");

//生出女儿
$par->create("Girls");
$par->show();


?>

 

第二个:简单的四则运算:

<?php
//抽象一个运算类
abstract class Oper{
public $num1;
public $num2;
public function __construct($num1,$num2){
$this->num1=$num1;
$this->num2=$num2;
}
abstract public function jisuan();
}

//加法类
class Jia extends Oper{


public function jisuan(){
return $this->num1+$this->num2;
}
}

//减法类
class Jian extends Oper{
public function jisuan(){
return $this->num1-$this->num2;
}
}

//乘法类
class Cheng extends Oper{
public function jisuan(){
return $this->num1*$this->num2;
}
}

//除法类
class Chu extends Oper{
public function jisuan(){
return $this->num1/$this->num2;
}
}

//给定运算类型造出相应的对象
class Factory{
public static $num1;
public static $num2;
public function __construct($num1,$num2){
self::$num1=$num1;
self::$num2=$num2;
}
public static function create($type){
return new $type(self::$num1,self::$num2);
}
}

//给定要运算的两个值
$factory=new Factory(3,2);

//造出加法对象
$jia=Factory::create('Jia');
echo $jia->jisuan().'<br/>';

//造出减法对象
$jian=Factory::create('Jian');
echo $jian->jisuan().'<br/>';

//造出乘法对象
$cheng=Factory::create('Cheng');
echo $cheng->jisuan().'<br/>';

//造出除法对象

$chu=Factory::create('Chu');

echo $chu->jisuan().'<br/>';

 

?>

代码都是经过测试的,大家可以直接复制粘贴即可,希望对大家有所帮助

转载于:https://www.cnblogs.com/xzswwp/archive/2012/11/20/2779073.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值