软件开发设计模式(三)—简单工厂模式
2017-08-14 14:44
183 查看
SimpleFactory简单工厂 关键字:多选一
问题:客户在使用对象时,面临在多个类型中选择一个来创建对象,具体对象的类型可能有变化
意图:定义一个全局的工厂类,负责类型的选择及对象的创建初始化,从而实现将创建与表示分离
适用性:
• 当一个类不知道它所必须创建的对象的类的时候。
• 当类将创建对象的职责委托给一个全局创建点,客户不需要关心具体类型,需要对象的时候,找全局创建点即可.
结构:
代码实例:
创建一个角色类
public abstract class 角色
{
}
角色类型有很多种,假设有ABC三种角色,分别建继承角色的子类
public class 角色A : 角色
{
}
创建角色工厂类
public class 角色工厂
{
public static 角色 创建角色(string 序号)
{
var type = Type.GetType("SimpleFactory.角色" + 序号);
return Activator.CreateInstance(type) as 角色;
}
}
测试
public class 客户
{
public void Test()
{
var 角色 = 角色工厂.创建角色("B");
}
}
问题:客户在使用对象时,面临在多个类型中选择一个来创建对象,具体对象的类型可能有变化
意图:定义一个全局的工厂类,负责类型的选择及对象的创建初始化,从而实现将创建与表示分离
适用性:
• 当一个类不知道它所必须创建的对象的类的时候。
• 当类将创建对象的职责委托给一个全局创建点,客户不需要关心具体类型,需要对象的时候,找全局创建点即可.
结构:
代码实例:
创建一个角色类
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 角色 = 角色工厂.创建角色(序号); } }
相关文章推荐
- 敏捷软件开发:原则、模式与实践——第7章 什么是敏捷设计
- 软件开发之设计原则和模式
- 软件开发常用设计模式—单例模式总结(c++版)
- 设计模式是软件的灵魂, 开发语言是多种实现的一种
- 设计模式 - 在软件开发中的应用
- 软件开发常用设计模式—单例模式总结(c++版)
- 章节 2.1 可靠的软件 – 灵活,可靠的软件 使用设计模式和敏捷开发
- 设计模式入门 软件开发过程--------------CHANGE,change----------
- 章节 1.2 敏捷方法 – 灵活,可靠的软件 使用设计模式和敏捷开发
- 软件开发之设计模式的基础介绍
- 设计模式在软件应用系统开发中的实战参考
- 软件开发常用设计模式—单例模式总结(c++版)
- 设计模式(工厂方法)与软件开发原则
- 面向对象的设计原则【敏捷软件开发 原则、模式与实践】里面摘录
- 软件开发23种设计模式及其形象比喻
- 【敏捷软件开发:原则、模式与实践】之敏捷设计的几个原则
- RUP软件开发设计模式
- 《敏捷软件开发 原则、模式与时间》读后感 - 敏捷设计原则
- 设计模式在软件应用系统开发中的实战参考
- 【转载】"变化"、"复用"、"抽象"、"稳定" 影响着软件设计模式,架构,开发方法