您的位置:首页 > 其它

设计模式的简单应用【加减乘除】

2013-08-21 14:29 253 查看
最近在学习设计模式,就简单设计模式而言,看后我写了一个“加减乘除”的例子,分享给大家。



首先定义一个工厂类:

public class OperatorFactory
{
public OperatorFactory()
{
}

internal OperatorNumber GetStrings(string num1, string oper, string num2)
{
OperatorNumber obj;
char c = char.Parse(oper);
switch (c)
{
case '+': obj = new Jia(num1, num2); break;
case '-': obj = new Jian(num1, num2); break;
case '*': obj = new Cheng(num1, num2); break;
case '/': obj = new Chu(num1, num2); break;
default: obj = null; break;
}
return obj;
}
}


然后定义一个运算类:(一个基类,加减乘除分别继承)

public class OperatorNumber
{
protected float x;
protected float y;
protected float r;

public string GetResult()
{
return r.ToString();
}
}

public class Jia : OperatorNumber
{
public Jia(string num1, string num2)
{
try
{
x = float.Parse(num1);
y = float.Parse(num2);
r = x + y;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString());
}
}
}

public class Jian : OperatorNumber
{
public Jian(string num1, string num2)
{
try
{
x = float.Parse(num1);
y = float.Parse(num2);
r = x - y;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString());
}
}
}

public class Cheng : OperatorNumber
{
public Cheng(string num1, string num2)
{
try
{
x = float.Parse(num1);
y = float.Parse(num2);
r = x * y;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString());
}
}
}

public class Chu : OperatorNumber
{
public Chu(string num1, string num2)
{
try
{
x = float.Parse(num1);
y = float.Parse(num2);
r = x / y;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString());
}
}
}


然后在窗体中调用即可。

OperatorFactory factory = new OperatorFactory();
OperatorNumber obj = factory.GetStrings(txtNum1.Text, cbOper.Text, txtNum2.Text);
txtRet.Text = obj.GetResult();

要实现加减乘除其实很简单,一般一个函数就可以做出来(简单修改一下GetStrings这个函数就可),这里只是想用简单的方式实现这个设计模式的思想。觉得确实不错。

我觉得设计模式看一下都不是问题,问题是如何将一个实际的问题转换为设计模式的思想,这个很重要。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息