简单工厂模式:计算器类
source link: https://blogread.cn/it/article/2030?f=hot1
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
简单工厂模式:计算器类
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
联系 [email protected]
025
网址 http://cuikai-wh.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
?>
建议继续学习:
扫一扫订阅我的微信号:IT技术博客大学习
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK