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

设计模式学习(一)——工厂方法模式

时间:2016-01-29 20:55:31      阅读:165      评论:0      收藏:0      [点我收藏+]

标签:

    这里抄一段维基百科的定义,工厂方法模式即:定义一个创建对象的接口,但让实现这个接口的类来决定实例化哪个类。工厂方法让类的实例化推迟到子类中进行。

下图展示了一个工厂方法模式的结构图:

技术分享

     在上图中,展示了一个工厂方法模式的使用过程,消费者(类的使用者)要购买一个运动产品,他需要到该产品的生产厂家那里购买,生产厂家实现“运动产品”的生产。在这个过程中,消费者只需要特定功能的产品,而不管功能是如何实现的。工厂只需要生产指定产品,而不管产品是如何设计的。而产品类只需要提供产品功能的设计。

    这与iphone的生产模式是一样的,消费者只需要一个iphone手机,富士康负责生产手机,而苹果则设计手机(虽然最终的销售是不一样的),这样就实现了生产效率的提高,其降低了三者之间的耦合度。

 

下面是代码的实现:

 1 //一个产品接口
 2 interface Product{
 3     void function();
 4 }
 5 
 6 //具体的产品--“生活产品”
 7 class LiveProduct implements Product{
 8     public void function(){
 9         System.out.println("a LiveProduct");
10     }
11 }
12 
13 //具体的产品--“运动产品”
14 class SportsProduct implements Product{
15     public void function(){
16         System.out.println("a SportsProduct");
17     }
18 }
19 
20 //产品工厂接口
21 interface ProductFactory{
22     Product createProduct();
23 }
24 
25 //具体的生产产品的工厂——生活产品工厂
26 class LiveProductFactory implements ProductFactory{
27 
28     public Product createProduct() {
29         return new LiveProduct();
30     }
31 }
32 
33 //具体的生产产品的工厂——运动产品工厂
34 class SportsProductFactory implements ProductFactory{
35 
36     public Product createProduct() {
37         return new SportsProduct();
38     }
39 }
40 
41 //消费者类
42 public class Cumsumer {
43     
44     public static void main(String[] args) {
45         //获得工厂,然后让工厂生产一个产品
46         ProductFactory fact=new LiveProductFactory();
47         Product p=fact.createProduct();
48         
49         //测试产品的功能
50         p.function();
51     }
52 }

 

设计模式学习(一)——工厂方法模式

标签:

原文地址:http://www.cnblogs.com/liyam/p/5169889.html

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