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