C# 设计模式之工厂模式(一)

本文通过一个银行财务部门的员工取钱任务的例子,介绍了如何使用工厂模式来改进代码的设计。通过引入员工接口和工厂类,降低了代码间的耦合度,并提高了代码的可维护性和扩展性。

  写在前面,PS一句:笔记专用,轻拍勿喷,看的不爽绕路前行即可。

一.举栗说明

  1.剧情:某银行财务有三位员工,分别为A、B、C三人,主要任务就是去银行取钱,如下:

 class EmloyeeA:
    {

        public void DoSomeThing()
        {
            Console.WriteLine("EmloyeeA去取钱");

        }
    }

    class EmloyeeB
    {

        public void DoSomeThing()
        {
            Console.WriteLine("EmloyeeB去取钱");

        }
    }

    class EmloyeeC 
    {

        public void DoSomeThing()
        {
            Console.WriteLine("EmloyeeC去取钱");
        }
    }

  某日主管说:“A去取钱”或者“B去取钱”的时候就有如下的动作了:

 class Manager
    {
        public Manager()
        {
            EmloyeeA emloyeeA = new EmloyeeA();
            emloyeeA.DoSomeThing();

            EmloyeeA emloyeeB = new EmloyeeA();
            emloyeeB.DoSomeThing();
        }

    }

  以上,所有动作已完成,但这样下来发现代码耦合度高(主管对每个员工都直接联系)、封装性差(每个员工信息都暴露在外面),还有用自己的话讲就是麻烦,不便于后期维护

以下是改装成工厂模式:

  2.建立员工抽象类:IEmolyee,然后各员工继承自该类:

  public interface IEmployee
    {

        void DoSomeThing();
    }

    public class EmloyeeA : IEmployee
    {
        public void DoSomeThing()
        {
            Console.WriteLine("EmloyeeA去取钱");
        }
    }

    class EmloyeeB : IEmployee
    {

        public void DoSomeThing()
        {
            Console.WriteLine("EmloyeeB去取钱");
        }
    }

    class EmloyeeC : IEmployee
    {

        public void DoSomeThing()
        {
            Console.WriteLine("EmloyeeC去取钱");
        }
    }
}

  3.建立工厂:

  

  public interface IFactory
    {
        IEmployee Creat(string id);
    }

    public class Factory : IFactory
    {
        public IEmployee Creat(string id)
        {
            switch (id)
            {
                case "A":
                    return new EmloyeeA();
                case "B":
                    return new EmloyeeB();
                case "C":
                    return new EmloyeeC();
                default:
                    return new EmloyeeA();
            }
        }
    }

  4.主管调用员工:

IFactory factory = new Factory();
            IEmployee employeeA = factory.Creat("A");
            IEmployee employeeB = factory.Creat("B");
            employeeA.DoSomeThing();
            employeeB.DoSomeThing();
            Console.ReadLine();

  以上即为工厂模式简单实例。

 

二.工厂模式特点

  1.通过IEmplyee隔离了主管与各员工的依赖关系,降低耦合度,在主管面前根本看不到EmplyeeX的信息。

  2.即使对各员工信息和整体进行增、删、改操作也不影响大局,确切的说主管不关心员工变化。

  3就代码操作而言,相对直接写个EmplyeeX出来,调用工厂方便得多。

 

三.示例代码

以上。

 

    

 

转载于:https://www.cnblogs.com/Khan-Sadas/p/6102533.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值