[读书笔记]大话设计模式 计算器设计

挺明白的计算器设计,写的非常不错。

 

代码
   
     
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

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

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

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


class Program
{
static void Main( string [] args)
{
Operation oper;
oper
= OperationFactory.createOperate( " + " );
oper.NumberA
= 1 ;
oper.NumberB
= 2 ;
double result = oper.GetResult();
Console.WriteLine(result);
}
}
}

public class OperationFactory   
   public static Operation createOperate(string operate)

在OperationFactory里面定义一个静态Operation成员类createOperate, 用string operate 初始化?

 

有点不怎么明白o(╯□╰)o

你可能感兴趣的:(设计模式)