简单工厂模式:计算器类

2010-06-02 08:03
<?php
/*
名称 计算器类
作用 实现两个数字的“加减乘除”运算
备注 除不尽将保留到小数点后13位
用法 $oper = new operator(9,'/',7);
echo $oper->getResult();

参数1 第一个数字
参数2 运算符号
参数3 第二个数字

性能 在1秒内响应
输出 无
返回 运算结果

简介 一个简单的工厂加工类。低耦合,融入了类的三大特性:封装、继承、多态。
第一个类作品,学习于《大话设计模式》第一章,原文用的是.net。

版权 署名
日期 2010-6-2
版本 原始版本
作者 崔凯
联系 cuikai.chn@gmail.com
网址 http://cuikai-wh.com/

*/

class operator{

private $result;

public function __construct($numberA,$operator,$numberB){

switch($operator){

case '+' :
$newOper = new operAdd($numberA,$numberB);
$this->result = $newOper->getResult();
break;

case '-' :
$newOper = new operSub($numberA,$numberB);
$this->result = $newOper->getResult();
break;

case '*' :
$newOper = new operMul($numberA,$numberB);
$this->result = $newOper->getResult();
break;

case '/' :
$newOper = new operDiv($numberA,$numberB);
$this->result = $newOper->getResult();
break;

}
}

public function getResult(){
return $this->result;
}

}

class values{

protected $numberA;
protected $numberB;

public function __construct($numberA, $numberB){
$this->numberA = $numberA;
$this->numberB = $numberB;
}

public function getResult(){
return 0;
}

}

class operAdd extends values{

public function getResult(){
return $this->numberA + $this->numberB;
}

}

class operSub extends values{

public function getResult(){
return $this->numberA - $this->numberB;
}

}

class operMul extends values{

public function getResult(){
return $this->numberA * $this->numberB;
}

}

class operDiv extends values{

public function getResult(){

if( 0 != $this->numberB){
return $this->numberA / $this->numberB;
}
else{
return '除数不得为0';
}
}

}
?>

1 条评论 / 引用:

  1. 简单工厂模式:计算器类:

    […] 版权 署更多… View full post on 时光立方 […]

评论

《对话守则》第一条:对话的目的是寻求真理。

以下选填: