一 创建型模式
1.描述“怎样创建对象”,它的主要特点是“将对象的创建与使用分离”。
二 UML类图
三 例子
// An highlighted block
public class BaseOperation{
public virtual void Task(){}
}
public class OperationA:BaseOperation{
public override void Task(){
//todo
}
}
public class OperationB:BaseOperation{
public override void Task(){
//todo
}
}
public class OperationFactory{
public static BaseOperation GetOperation(string operationType){
BaseOperation operation = null;
switch(operationType)
{
case "A":
operation = new OperationA();
break;
//todo
}
return operation;
}
}
public class Test{
public Test(){
BaseOperation operation = OperationFactory.GetOperation("A");
operation.Task();
}
}
四 优缺点
4.1 优点
- 工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,对于客户端来说,去除了与具体产品的依赖。
4.2 缺点
- 违背了开放封闭原则, 每次增加新的产品, 都需要修改工厂类。
五 使用反射改进简单工厂
- Assembly.Load(“程序集名称”).CreateInstance(“命名空间.类名”);
- 例子
public class OperationFactory
{
public static string assemblyName = "assemblyName"; //可以改成读取配置表
public static string className = "NameSpace.ClassName";//可以改成读取配置表
public static BaseOperation GetOperation() {
BaseOperation operation = (BaseOperation)Assembly.Load(assemblyName).CreateInstance(className);
return operation;
}
}