简单工厂模式的学习
简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。
所有设计模式总结请参考:http://blog.csdn.net/chr23899/article/details/46999267
所有设计原则总结请参考:http://blog.csdn.net/chr23899/article/details/46999401
首先来看下具体的效果图
主要包括两个数 Number_X 和Number_Y 下面是四个操作 Add(+)、 Sub(-) 、 Mul(*)、 Div(/); 当用户点击其中一个操作时工厂会实例化具体的操作类型。
改应用的类图如下:
具体实现如下代码:
//操作类
public class Operation
{
//定义两个操作数 number_x 与 number_y
private double number_x = 0;
private double number_y = 0;
//对 number_x 进行封装
public double Number_x
{
get { return number_x; }
set { number_x = value; }
}
//对 number_y 进行封装
public double Number_y
{
get { return number_y; }
set { number_y = value; }
}
//定义虚函数
public virtual double Result()
{
double number = 0;
return number;
}
}
//加法运算
public class Operation_Add : Operation
{
public override double Result()
{
double number = 0;
number = Number_x + Number_y;
return number;
}
}
//减法运算
public class Operation_Sub : Operation
{
public override double Result()
{
double number = 0;
number = Number_x - Number_y;
return number;
}
}
//乘法运算
public class Operation_Mul : Operation
{
public override double Result()
{
double number = 0;
number = Number_x * Number_y;
return number;
}
}
//除法运算
public class Operation_Div : Operation
{
public override double Result()
{
double number = 0;
if (Number_y == 0)
return 0;
number = Number_x / Number_y;
return number;
}
}
//定义一个工厂类获取具体的操作类
public class FactoryOfOperation
{
public static Operation GetTheOperation(string str)
{
Operation oper = null;
switch (str)
{
case "add":
oper = new Operation_Add();
break;
case "sub":
oper = new Operation_Sub();
break;
case "mul":
oper = new Operation_Mul();
break;
case "div":
oper = new Operation_Div();
break;
default:
break;
}
return oper;
}
}
源程序下载地址: http://download.csdn.net/detail/chr23899/8922383
原文出处: http://blog.csdn.net/chr23899 转发请说明