C# 设计模式之工厂模式
Posted 好好活着,好好活着就是做很多有意义的事情
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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出来,调用工厂方便得多。
三.示例代码
以上。
以上是关于C# 设计模式之工厂模式的主要内容,如果未能解决你的问题,请参考以下文章