您的位置:首页 > 其它

[传智播客学习日记]简单工厂模式计算器案例

2011-10-25 20:29 411 查看
这周学习了最基本的设计模式——简单工厂模式,指的是通过一个返回值为父类的静态函数,取得一个子类的对象,以实现“父类 Obj = new 子类()”方式的多态。 以下是一个简易计算器,每当扩展一个运算方法时,只需要增加一个类就可以了。 (至于里面恶心的switch块,日后再研究怎么去掉)

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

namespace 工厂模式计算器
{
public abstract class Cal
{
private double number1;

public double Number1
{
get { return number1; }
set { number1 = value; }
}
private double number2;

public double Number2
{
get { return number2; }
set { number2 = value; }
}
public abstract double JiSuan();
}

class Add : Cal
{
public override double JiSuan()
{
return Number1 + Number2;
}
}
class Sub : Cal
{
public override double JiSuan()
{
return Number1 - Number2;
}
}
class Mul : Cal
{
public override double JiSuan()
{
return Number1 * Number2;
}
}

class Program
{
//简单工厂模式
static Cal CreateCal(string caoZuoFu)
{
Cal cal = null;
switch (caoZuoFu)
{
case"+":
cal = new Add();
break;
case "-":
cal = new Sub();
break;
case "*":
cal = new Mul();
break;
}
return cal;
}

static void Main(string[] args)
{
Console.WriteLine("请输入操作数1:");
double d1 = Convert.ToDouble(Console.ReadLine());

Console.WriteLine("请输入操作数2:");
double d2 = Convert.ToDouble(Console.ReadLine());

Console.WriteLine("请输入运算符:");
string caoZuoFu = Console.ReadLine();

Cal myCal = CreateCal(caoZuoFu);

myCal.Number1 = d1;
myCal.Number2 = d2;

Console.WriteLine("结果是:{0}",myCal.JiSuan());
Console.ReadKey();
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: