求一个用简单工厂模式编写的C#计算器,只有加减乘除和等于就好~谢谢~

 我来答
miniappfVOpHAkJKcK0t
推荐于2016-12-02 · TA获得超过354个赞
知道小有建树答主
回答量:338
采纳率:0%
帮助的人:279万
展开全部
/仔戚缓仔哪/这个程序只是实现两个数的加减乘除,其它的功能由于时间原因没写。有兴趣加群113572029
//五个类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Test
{
abstract class Count
{
private double one;
public double One
{
get { return one; }
set { one = value; }
}
private double two;
public double Two
{
get { return two; }
set { two = value; }
}
public Count(){}
public Count(double one, double two)
{
this.One = one;
this.Two = two;
}
public abstract double count();
}
//加
class Add : Count
{
public Add()
:base(){}
public Add(double one, double two)
:base(one,two)
{
this.One = one;
this.Two = two;
}
public override double count()
{
return this.One + this.Two;
}
}
//减
class Cut : Count
{
public Cut()
: base() { }
public Cut(double one, double two)
: base(one, two)
{
this.One = one;
this.Two = two;
}
public override double count()
{
return this.One - this.Two;
}
}
//念模乘
class Ride : Count
{
public Ride()
: base() { }
public Ride(double one, double two)
: base(one, two)
{
this.One = one;
this.Two = two;
}
public override double count()
{
return this.One * this.Two;
}
}
//除
class Divide : Count
{
public Divide()
: base() { }
public Divide(double one, double two)
: base(one, two)
{
this.One = one;
this.Two = two;
}
public override double count()
{
return this.One / this.Two;
}
}
}
//简单的工厂模式
private void button1_Click(object sender, EventArgs e)
{
try
{
Count count = null;
switch (comboBox1.Text)
{
case "+":
count = new Add(double.Parse(txtOne.Text), double.Parse(txtTwo.Text));
break;
case "-":
count = new Cut(double.Parse(txtOne.Text), double.Parse(txtTwo.Text));
break;
case "*":
count = new Ride(double.Parse(txtOne.Text), double.Parse(txtTwo.Text));
break;
case "/":
count = new Divide(double.Parse(txtOne.Text), double.Parse(txtTwo.Text));
break;

}
if (count != null)
txtCount.Text = count.count().ToString();
else
MessageBox.Show("系统错误!");
}
catch
{
MessageBox.Show("请输入合法的操作数!");
}
}
百度网友37b5e45
2011-03-13 · 超过12用户采纳过TA的回答
知道答主
回答量:42
采纳率:0%
帮助的人:35.5万
展开全部
这是我的个人理解:
简单工厂模式的创建步骤:
1、定义申明一个基类
2、察高建立闭没携多个继承同一个的基类的子类。
3、再把子类捆绑到同一个对外接口上

我写的是控制台程序总共有6个类:其中Operate类为基类,其他的4个类为Operate的轿伏子类(Add,Sub,Multiply,Div),factory就是那个对外接口。没有实现 等于 功能,其实factory类就相当于等于功能。
Operate类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace _4
{
class Operate
{
int number_L;

protected int Number_L
{
get { return number_L; }
}

int number_R;

protected int Number_R
{
get { return number_R; }
}

public Operate(int value_L,int value_R)
{
this.number_L = value_L;
this.number_R = value_R;
}

public virtual int Result()
{
return 0;
}

}
}
四个子类只是重写了父类中的 Result方法
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace _4
{
class Add:Operate //加法实现
{
public Add(int value_L, int value_R)
: base(value_L, value_R)
{ }

public override int Result()
{
return this.Number_L + this.Number_R;
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace _4
{
class Sub:Operate //减法实现
{
public Sub(int value_L, int value_R)
: base(value_L, value_R)
{ }

public override int Result()
{
return this.Number_L - this.Number_R;
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace _4
{
class Mutiply:Operate //乘法实现
{
public Mutiply(int value_L, int value_R)
: base(value_L, value_R)
{ }

public override int Result()
{
return this.Number_L * this.Number_R;
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace _4
{
class Div:Operate //除法实现
{
public Div(int value_L, int value_R)
: base(value_L, value_R)
{ }

public override int Result()
{
if (Number_R == 0)
return int.MaxValue;
return Number_L / Number_R;
}
}
}

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

namespace _4
{
class Factory //工厂实现,此处可以与 = 相对应
{
public Operate Choice(int value_L, int value_R, char value_op)
{
Operate op = null;
switch (value_op)
{
case '+':
op=new Add(value_L,value_R);
break;
case '-':
op=new Sub(value_L, value_R);
break;
case '*':
op= new Mutiply(value_L,value_R);
break;
case '/':
op= new Div(value_L, value_R);
break;
default:
break;
}
return op;
}
}
}
主程序的实现
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace _4
{
class Program
{
static void Main(string[] args)
{
Factory factory = new Factory();
Console.WriteLine("请输入第一个数字:");
int value_L = int.Parse(Console.ReadLine());
Console.WriteLine("请输入第二个数字:");
int value_R = int.Parse(Console.ReadLine());
Console.WriteLine("请输入运算符号('+'、'-'、'*'、'/'):");
char value_Op=Convert.ToChar(Console.ReadLine());
Console.WriteLine("运算结果:");
int result = factory.Choice(value_L, value_R, value_Op).Result();
Console.WriteLine(result);
Console.Read();
}
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hanwt139
2011-03-13 · TA获得超过843个赞
知道小有建树答主
回答量:1144
采纳率:100%
帮助的人:696万
展开全部
去找《大话设计模式》,这本书的第一章就是你说的戚樱这个内容,而且里面历仔芹是循序肢毕渐进,我想,对你的帮助应该更大。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式