工厂方法模式

Posted

tags:

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

工厂方法模式:定义一个创建对象的接口,让子类决定实例化哪个类型的对象,目的是将对象的创建推迟到子类中完成,并想对象的使用者隐藏对象的创建过程与具体类型

         工厂方法是针对每一种产品提供一个工厂类。通过不同的工厂实例来创建不同的产品实例。

 实例:一个工厂不能创建所有品牌的车辆,于是单独分出来具体的工厂,每个具体的工厂创建一个品牌的车辆。

 

 

步骤1

  创建一个接口

技术分享
1 public interface ICar
2 {
3     void CreateCar();
4 }
View Code

步骤2

  创建实现接口的基类

技术分享
1 public abstract class CCar : ICar
2 {
3     public abstract void CreateCar();
4 }
View Code

步骤3

  创建实现接口的实体类

技术分享
 1  public class BMW : CCar
 2     {
 3         public override void CreateCar()
 4         {
 5             Console.WriteLine("BWM!");
 6         }
 7     }
 8 
 9     public class Benz : CCar
10     {
11         public override void CreateCar()
12         {
13             Console.WriteLine("Benz!");
14         }
15     }
16 
17     public class Rolls : CCar
18     {
19         public override void CreateCar()
20         {
21             Console.WriteLine("Rolls!");
22         }
23     }
View Code

步骤4

  创建一个工厂,生成基于给定信息的实体类的对象

技术分享
 1 class CarFactory
 2     {
 3         public ICar CreateCar(string type)
 4         {
 5             if (type == "BWM")
 6             {
 7                 return new BMW();
 8             }
 9             else if (type == "Benz")
10             {
11                 return new Benz();
12             }
13             else if (type == "Rolls")
14             {
15                 return new Rolls();
16             }
17             return null;
18         }
19     }
View Code

步骤5

  使用该工厂,通过传递类型信息来获取实体类的对象

技术分享
 1 class CarFactory
 2     {
 3         public ICar CreateCar(string type)
 4         {
 5             if (type == "BWM")
 6             {
 7                 return new BMW();
 8             }
 9             else if (type == "Benz")
10             {
11                 return new Benz();
12             }
13             else if (type == "Rolls")
14             {
15                 return new Rolls();
16             }
17             return null;
18         }
19     }
View Code

 

最后

技术分享

如有不正确的地方,请各位斧正!

 

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

iOS经常使用设计模式——工厂方法(简单工厂模式,工厂方法模式, 抽象工厂模式)

工厂设计模式

Java设计模式3:工厂方法模式

设计模式之工厂方法模式

对比总结三个工厂模式(简单工厂,工厂方法,抽象工厂)

设计模式之工厂方法模式