IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

简单工厂模式:计算器类

时光立方 2010-07-21 20:16:54 累计浏览 3,006 次
本机暂存
001 <?php
002 /*
003 名称 计算器类
004 作用 实现两个数字的“加减乘除”运算
005 备注 除不尽将保留到小数点后13位
006 用法 $oper = new operator(9,'/',7);
007 echo $oper->getResult();
008   
009 参数1 第一个数字
010 参数2 运算符号
011 参数3 第二个数字
012   
013 性能 在1秒内响应
014 输出 无
015 返回 运算结果
016   
017 简介 一个简单的工厂加工类。低耦合,融入了类的三大特性:封装、继承、多态。
018 第一个类作品,学习于《大话设计模式》第一章,原文用的是.net。
019   
020 版权 署名
021 日期 2010-6-2
022 版本 原始版本
023 作者 崔凯
024 联系 cuikai.chn@gmail.com
026   
027 */
028   
029 class operator{
030   
031 private $result;
032   
033 public function __construct($numberA,$operator,$numberB){
034   
035 switch($operator){
036   
037 case '+' :
038 $newOper = new operAdd($numberA,$numberB);
039 $this->result = $newOper->getResult();
040 break;
041   
042 case '-' :
043 $newOper = new operSub($numberA,$numberB);
044 $this->result = $newOper->getResult();
045 break;
046   
047 case '*' :
048 $newOper = new operMul($numberA,$numberB);
049 $this->result = $newOper->getResult();
050 break;
051   
052 case '/' :
053 $newOper = new operDiv($numberA,$numberB);
054 $this->result = $newOper->getResult();
055 break;
056   
057 }
058 }
059   
060 public function getResult(){
061 return $this->result;
062 }
063   
064 }
065   
066 class values{
067   
068 protected $numberA;
069 protected $numberB;
070   
071 public function __construct($numberA, $numberB){
072 $this->numberA = $numberA;
073 $this->numberB = $numberB;
074 }
075   
076 public function getResult(){
077 return 0;
078 }
079   
080 }
081   
082 class operAdd extends values{
083   
084 public function getResult(){
085 return $this->numberA + $this->numberB;
086 }
087   
088 }
089   
090 class operSub extends values{
091   
092 public function getResult(){
093 return $this->numberA - $this->numberB;
094 }
095   
096 }
097   
098 class operMul extends values{
099   
100 public function getResult(){
101 return $this->numberA * $this->numberB;
102 }
103   
104 }
105   
106 class operDiv extends values{
107   
108 public function getResult(){
109   
110 if( 0 != $this->numberB){
111 return $this->numberA / $this->numberB;
112 }
113 else{
114 return '除数不得为0';
115 }
116 }
117   
118 }
119 ?>

同分类推荐文章

  1. 如何写好设计文档? (2026-06-23 08:00:00)
  2. Designing With Uncertainty: How AI Supercharges Probabilistic Thinking (2026-06-16 23:00:00)
  3. The Benefits Of Cognitive Inclusion In UX Research (2026-06-10 18:00:00)

查看更多 设计 文章 →

建议继续学习

  1. PHP的异常原理与实例说明 Fatal error: Uncaught exception (累计阅读 9,764)
  2. 最常被程序员们谎称读过的计算机书籍 (累计阅读 9,159)
  3. PHP业务逻辑层和数据访问层设计 (累计阅读 7,580)
  4. JavaScript Interface 接口的实现 (累计阅读 6,992)
  5. 面向对象的Shell脚本 (累计阅读 6,099)
  6. 用星际争霸讲解面向对象的概念 (累计阅读 5,223)
  7. 设计模式原则总结 (累计阅读 5,179)
  8. struct与class区别联系 (累计阅读 4,981)
  9. 自己写的一个轻量级javascript框架的设计模式 (累计阅读 4,909)
  10. 关于架构的一句话,还有一个实例 (累计阅读 4,706)