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

创建型-工厂方法模式

时间:2014-08-20 22:23:32      阅读:234      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   使用   strong   2014   div   

1、工厂方法模式意图:

定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method使一个类的实例化延迟到其子类。

2、应用场景:

 考虑一个榨汁机的应用场景。榨汁机可以用来制作苹果汁、西瓜汁、橘汁等,即榨汁机可以用来制作水果汁。但是,夏天的冷饮店中,为了提高制作水果汁的效率和防止味道互串等情况,可能需要分别准备三个水果榨汁机,分别用来生产苹果汁、西瓜汁、橘汁等。

3、工厂方法模式类图:

     bubuko.com,布布扣

角色

  • Product:定义工厂方法所创建对象。如场景描述中的果汁。
  • ConcreteProduct:实现Product中的接口,定义具体化的产品。如场景描述中的苹果汁、西瓜汁、橘汁等。
  • Creator:用于声明创建Product类型对象的工厂方法。如场景中的榨汁机这一概念。
  • ConcreteCreator:实现Creator中的工厂方法,专门用于产生具体的产品ConcreteProduct。如场景中的苹果榨汁机、西瓜榨汁机等。

协作

  • Creator依赖于它的子类来定义工厂方法。

4、适用性:

工厂方法模式跟工厂模式类似,其中工厂方法模式适合于构造同属于同一个类别的不同产品,所有的产品属于同一个系列中。

5、实例:

5.1 实例类图:

   bubuko.com,布布扣  

说明:店员(Waiter)使用不同的榨汁机来制作不同的水果汁,进而销售给顾客。

5.2 Waiter类:

除了用户类Waiter类之外,其他的类定义明了,故仅提供用户类。

1 public class Waiter{
2       
3     public void sell(Juicer juicer){
4         Juice juice = juicer.MakeJuice();    //使用传入的特定的榨汁机来生产特定的水果汁
5 
6         //卖给顾客,收钱
7     }
8 
9 }

 

6、特点

  • 连接平行的类层次——工厂方法的每个子类用于产生平行的不同的具体产品,工厂子类同具体产品平行关系。

 

创建型-工厂方法模式,布布扣,bubuko.com

创建型-工厂方法模式

标签:style   blog   http   color   使用   strong   2014   div   

原文地址:http://www.cnblogs.com/-crazysnail/p/3924125.html

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