码迷,mamicode.com
首页 > 其他好文 > 详细

工厂方法模式

时间:2017-07-04 22:26:02      阅读:235      评论:0      收藏:0      [点我收藏+]

标签:bst   splay   oid   不同   地方   gif   http   模式   strong   

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

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

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

 

 

步骤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

 

最后

技术分享

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

 

工厂方法模式

标签:bst   splay   oid   不同   地方   gif   http   模式   strong   

原文地址:http://www.cnblogs.com/-zda/p/7118765.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!