SimpleFactory简单工厂 关键字:多选一
问题:客户在使用对象时,面临在多个类型中选择一个来创建对象,具体对象的类型可能有变化
意图:定义一个全局的工厂类,负责类型的选择及对象的创建初始化,从而实现将创建与表示分离
适用性:
• 当一个类不知道它所必须创建的对象的类的时候。
• 当类将创建对象的职责委托给一个全局创建点,客户不需要关心具体类型,需要对象的时候,找全局创建点即可.
结构:
代码实例:
创建一个角色类
public abstract class 角色
{
}
角色类型有很多种,假设有ABC三种角色,分别建继承角色的子类
public class 角色A : 角色
{
}
public class 角色B : 角色
{
}
public class 角色C : 角色
{
}
创建角色工厂类
public class 角色工厂
{
public static 角色 创建角色(string 序号)
{
var type = Type.GetType("SimpleFactory.角色" + 序号);
return Activator.CreateInstance(type) as 角色;
}
}
测试
public class 客户
{
public void Test()
{
var 角色 = 角色工厂.创建角色("B");
}
}
class Program
{
static void Main(string[] args)
{
//表示(使用)
Console.WriteLine("请输入要创建角色的序号?");
var 序号 = Console.ReadLine();
var 角色 = 角色工厂.创建角色(序号);
}
}