设计模式学习——工厂方法模式

Posted

tags:

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

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

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

技术分享

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

    这与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 }

 

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

工厂模式&抽象工厂——HeadFirst设计模式学习笔记

简单工厂模式\工厂方法模式

案例分析:设计模式与代码的结构特性

设计模式之工厂方法和抽象工厂

工厂模式学习笔记

二十三种设计模式