Last active
May 6, 2017 09:22
-
-
Save Everfighting/0b19b38e3aeb541d1d4cb3ae134bb14b to your computer and use it in GitHub Desktop.
大话设计模式:简单工厂模式(C#版)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class Operation | |
{ | |
private double _numberA = 0; | |
private double _numberB = 0; | |
public double NumberA | |
{ | |
get { return _numberA; } | |
set { _numberA = value; } | |
} | |
public double NumberB | |
{ | |
get { return _numberB; } | |
set { _numberB = value; } | |
} | |
public virtual double GetResult() | |
{ | |
double result = 0; | |
return result; | |
} | |
} | |
class OperationAdd : Operation | |
{ | |
public override double GetResult() | |
{ | |
double result = 0; | |
result = NumberA + NumberB; | |
return result; | |
} | |
} | |
class OperationSub : Operation | |
{ | |
public override double GetResult() | |
{ | |
double result = 0; | |
result = NumberA - NumberB; | |
return result; | |
} | |
} | |
class OperationMul : Operation | |
{ | |
public override double GetResult() | |
{ | |
double result = 0; | |
result = NumberA * NumberB; | |
return result; | |
} | |
} | |
class OperationDiv : Operation | |
{ | |
public override double GetResult() | |
{ | |
double result = 0; | |
if (NumberB ==0): | |
throw new Exception("除数不能为0。"); | |
result = NumberA / NumberB; | |
return result; | |
} | |
} | |
public class OperationFactory | |
{ | |
public static Operation createOperate(string operate) | |
{ | |
Operation oper = null; | |
switch (operate) | |
{ | |
case "+": | |
oper = new OperationAdd(); | |
break; | |
case "-": | |
oper = new operationSub(); | |
break; | |
case "*": | |
oper = new OperationMul(); | |
break; | |
case "/": | |
oper = new operationDiv(); | |
break; | |
} | |
return oper; | |
} | |
} | |
/// 客户端代码 | |
Operation oper; | |
oper = OperationFactory.createOperate("+"); | |
oper.NumberA = 1; | |
oper.NumberB = 2; | |
double result = oper.GetResult(); | |
Opera |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment