工厂方法模式:
定义一个用于创建对象的接口,让子类决定实例化哪一个类
把选择放到了客户端。
与简单工厂的区别:克服简单工厂违背开放——封闭原则的缺点
简单工厂的最大优点在工厂中包含必要的逻辑判断,根据客户端的传入条件动态选择实例化的类,对客户端来说去除了与具体产品的依赖。
实体和具体方法:
class Operation
{
string num1 = string.Empty;
string num2 = string.Empty;
public string Num1
{
get { return num1; }
set { num1 = value; }
}
public string Num2
{
get { return num2; }
set { num2 = value; }
}
public virtual string GetResult()
{
string result=string.Empty;
return GetResult();
}
}
class AddOperation : Operation
{
public override string GetResult()
{
string result;
result = (Convert.ToDouble(Num1) + Convert.ToDouble(Num2)).ToString();
return result;
}
}
class SubOperation : Operation
{
public override string GetResult()
{
string result;
result = (Convert.ToDouble(Num1) -Convert.ToDouble(Num2)).ToString();
return result;
}
}
工厂方法:
interface IFactory
{
Operation CreateOperation();
}
class AddFactory : IFactory
{
public Operation CreateOperation()
{
return new AddOperation();
}
}
class SubFactory : IFactory
{
public Operation CreateOperation()
{
return new SubOperation();
}
}
调用工厂方法:
IFactoryoperFactory = new AddFactory();
Operation oper = operFactory.CreateOperation();
oper.Num1 = "2";
oper.Num2 = "1";
Console.WriteLine(oper.GetResult());
Console.ReadKey();