设计模式(2)――创建型模式 (二)

2014-11-24 02:43:08 · 作者: · 浏览: 1

{
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;
}
}


}
namespace 工厂模式
{
class Class1
{
static void Main(string[] args)
{
IFactory operFactory = new AddFactory();
Operation oper = operFactory.CreateOperation();
oper.NumberA = 1;
oper.NumberB = 2;
double result = oper.GetResult();
Console.WriteLine(result );
}
}
interface IFactory //工厂接口
{
Operation CreateOperation();
}
class AddFactory : IFactory //加法工厂
{

public Operation CreateOperation()
{
return new OperationAdd();
}
}
class SubFactory : IFactory //减法工厂
{

public Operation CreateOperation()
{
return new OperationSub();
}
}
class MulFactory : IFactory //乘法工厂
{

public Operation CreateOperation()
{
return new OperationMul();
}
}
class DivFactory : IFactory //除法工厂
{

public Operation CreateOperation()
{
return new OperationDiv();
}
}

public class Operation //抽象运算类
{
private double _numberA = 0;
private double _numberB;
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