简单工厂模式
来源:互联网 发布:淘宝拔草少年真货假货 编辑:程序博客网 时间:2024/06/14 23:56
简单工厂模式说明:
当需要创建类的实例时却不知道到底应该创建哪一个类时,选择用简单工厂模式。专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。其实质是有一个工厂累根据传入的参量,动态决定应创建出哪一个累的实例。
实例说明
1.薪资管理系统
假定公司薪资分为技术人员(月薪),市场营销人员(底薪+提成),经理(年薪+股份)三种运算算法,如果我们把三种运算写在
一个类中,这样假如以后要增加兼职人员(时新)的算法,这样就必须得更改这个类,导致以前三种算法暴露。所以应该把每一种
运算算法分离开来,这样以后需要修改某一算法或者新添加一种算法,都只修改一个子类或者新添加一个类和简单工厂类,不会影
响其他的类。实例化时根据人员岗位动态创建。在此用简单工厂模式非常的合适。具体见代码及说明。
/// <summary>
/// 抽象父类:定义一个方法返回薪资值
/// </summary>
public abstract class SalaryManage
{
/// <summary>
/// 返回薪资
/// </summary>
public abstract string GetSalary();
}
/// <summary>
/// 技术人员薪资
/// </summary>
public class SalaryTech:SalaryManage
{
public override string GetSalary()
{
return "我是技术人员,我的薪资是月薪";
}
}
/// <summary>
/// 市场营销人员薪资
/// </summary>
public class SalaryMarket:SalaryManage
{
public override string GetSalary()
{
return "我是市场营销人员,我的薪资是底薪+提成";
}
}
/// <summary>
/// 经理薪资
/// </summary>
public class SalaryManager:SalaryManage
{
public override string GetSalary()
{
return "我是经理,我的薪资是年薪+股份";
}
}
/// <summary>
/// 简单工厂类:动态决定创建哪个类的实例
/// </summary>
public class SalaryFactory
{
public static SalaryManage CreateSalaryManage(string type)
{
SalaryManage sal = null;
switch (type)
{
case "技术人员":
sal = new SalaryTech();
break;
case "市场营销人员":
sal = new SalaryMarket();
break;
case "经理":
sal = new SalaryManager();
break;
}
return sal;
}
}
调用:
SalaryManage sal;
sal = SalaryFactory.CreateSalaryManage("经理");
Console.WriteLine(sal.GetSalary());
假如现在要新增加一个兼职人员(时新),此时只需要新添加一个兼职人员的类,同时修改简单工厂类即可。
/// <summary>
/// 兼职人员薪资
/// </summary>
public class SalaryParttime:SalaryManage
{
public override string GetSalary()
{
return "我是兼职人员,我的薪资是时新";
}
}
/// <summary>
/// 简单工厂类
/// </summary>
public class SalaryFactory
{
public static SalaryManage CreateSalaryManage(string type)
{
SalaryManage sal = null;
switch (type)
{
case "技术人员":
sal = new SalaryTech();
break;
case "市场营销人员":
sal = new SalaryMarket();
break;
case "经理":
sal = new SalaryManager();
break;
case "兼职人员":
sal = new SalaryParttime();
break;
}
return sal;
}
}
- 工厂模式-简单工厂
- 工厂模式-简单工厂
- 工厂模式-简单工厂模式
- 工厂模式-简单工厂模式
- 简单工厂模式,工厂模式
- 工厂模式-简单工厂模式
- 简单工厂模式,工厂模式
- 简单工厂、工厂模式、抽象工厂模式
- 简单工厂、工厂模式、抽象工厂模式
- 简单工厂&工厂模式&抽象工厂模式
- 简单工厂和工厂模式
- 简单工厂和工厂模式
- 1,工厂模式--简单工厂
- 简单工厂和工厂模式
- 简单工厂,工厂模式,抽象工厂
- 简单工厂,工厂模式,抽象工厂
- 简单工厂、工厂方法、抽象工厂模式
- 简单工厂、工厂模式和抽象工厂
- BIEE 11g 新特性Double Colunm案例一则 动态切换金额显示单位
- Sicily 1033 City Road (递推)
- 走进android的世界(不断更新中)
- 嵌入式Linux文件系统详细介绍
- 二叉树详解 binary tree && binary search tree
- 简单工厂模式
- 多个线程同时写入一个文件问题------php
- 如何隐藏已安装apk的icon
- Statement和PreparedStatement之间的区别
- 嵌入式系统开发学习如何起步、如何深入?
- WordPress博客主题蓝色超炫科技感主题Saikorv
- 5.查找最小的k个元素
- java获取上传图片宽度高度
- c++实战1