工厂方法模式

Posted nullcodeworld

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了工厂方法模式相关的知识,希望对你有一定的参考价值。

       工厂方法模式(Factory Method),定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。

       技术分享图片

       故事:雷锋依然在人间

       小菜班里有个叫薛磊风的同学,大学期间一直在帮助一个老人,说自己是学雷锋,但是这段时间他出事受伤了,希望班里的同学能帮忙照顾老人。

Leifeng.cs

 1 namespace FactoryMethodPattern
 2 {
 3     //雷锋类
 4     class Leifeng
 5     {
 6         public void Sweep()
 7         {
 8             Console.WriteLine("扫地");
 9         }
10         public void Wash()
11         {
12             Console.WriteLine("洗衣");
13         }
14         public void BuyRice()
15         {
16             Console.WriteLine("买米");
17         }
18     }
19 
20     //学雷锋的大学生类
21     class Undergraduate : Leifeng { }
22     //社区志愿者类
23     class Volunteer : Leifeng { }
24 
25 
26 
27     //雷锋工厂
28     interface IFactory
29     {
30         Leifeng CreateLeifeng();
31     }
32 
33     //学雷锋的大学生工厂
34     class UndergraduateFactory : IFactory
35     {
36         public Leifeng CreateLeifeng()
37         {
38             return new Undergraduate();
39         }
40     }
41     //社区志愿者工厂
42     class VolunteerFactory : Leifeng
43     {
44         public Leifeng CreateLeifeng()
45         {
46             return new Volunteer();
47         }
48     }
49 }

 

Program.cs

 1 namespace FactoryMethodPattern
 2 {
 3     class Program
 4     {
 5         static void Main(string[] args)
 6         {
 7             IFactory factory = new UndergraduateFactory();  //换成社区志愿者,改这里就可以了
 8             Leifeng student = factory.CreateLeifeng();
 9 
10             student.BuyRice();
11             student.Sweep();
12             student.Wash();
13 
14             Console.Read();
15         }
16     }
17 }

 

以上是关于工厂方法模式的主要内容,如果未能解决你的问题,请参考以下文章

设计模式-简单工厂工厂方法模式抽象工厂模式详解

工厂方法模式

设计模式-工厂方法模式(Go实现)

C++工厂模式(简单工厂工厂方法抽象工厂)

C++工厂模式(简单工厂工厂方法抽象工厂)

设计模式---工厂模式