设计模式-----基于反射工厂模式

最近在学设计模式。在此记录每次学习

工厂模式是我们最常听到和用到的设计模式之一。之前也用到过,但是每次没有好好整理。

工厂模式的好处网上都很多解释。最主要减少程序耦合度,方便维护,扩展等等。

当一个程序越大,出现新的需求时,维护性,可扩展性就会显得越重要。

工厂模式:一般创建子类对象赋值基类或接口,但是无论是接口还是基类原理都是多态。继承在工厂模式也起了很重要作用,代码封装。

假设有一个公司要管理工资发放

公司里所有的人都是员工(Employee),应该有个Employee,里面应该有基本信息,和最重要工资计算方法

View Code

有个项目经理,工资计算方式:5000(基本工资) + 项目奖金 。 项目经理也是员工,所以继承员工类

也有程序员,工资计算方式:3000(基本奖金)。同理程序员也应该继承员工类

View Code

当然还有最重要工厂类

所有东西弄好,就到发工资,一般我们是以下几个步骤

 1)我们需要一个工厂负责创建不同人物(这样描述似乎不太合适,在代码里也这样表示)

View Code
public static object CreateObject(string assembly,string objName,params object[] args)
{
    try
    {
        Assembly asm = Assembly.Load(assembly);
        if (asm == null) return null;

        string fullName = assembly + "." + objName;

        Type type = asm.GetType(fullName);
        Object obj = Activator.CreateInstance(type, args);

        if (obj == null) return null;
        return obj;
    }
    catch (Exception ex)
    {
        LogHelper.WriteLog("[Factory].CreateObject(string objName)", ex.Message);
        return null;
    }
}

 2)将工厂创建的对象赋值给基类,调用基类虚方法实现多态

View Code

这样虽然是通俗易懂,但是不易维护,不易扩展,当出现新员工时,改动较大

工厂模式:

当公司发展需要一个测试人员,要程序员写一个测试人员发工资计算(基本工资 2500)

项目经理不可能把整个项目给程序员修改(万一程序员修改程序员发工资方式,每个月给自己+1000)

这时工厂模式发挥作用,项目经理只要告诉你有一个Employee的类,你去继承它实现测试人员类

很快可以写出

只需要加入这个类,程序就能发测试人员工资

转载于:https://www.cnblogs.com/WilsonPan/archive/2011/09/27/2533255.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值