花绕月
花开人间自凋零,绕在心间却有情。月冷风清心若冰,我断凄愁魂犹明。

  简单工厂模式
  业务和界面分离

//一个计算器的例子
//不同计算的共性抽象于此类
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;
	}
}

//加法类
//默认修饰符是internal,当前工程中的代码可访问
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;
			//...
		}
		return oper;
	}
}

//客户端代码
Operation oper;
//工厂类本身没有实例化
oper = OperationFactory.createOperate("+");
oper.NumberA = 1;
oper.NumberB = 2;
double result = oper.GetResult();
posted on 2010-05-14 09:16  花绕月  阅读(217)  评论(0编辑  收藏  举报