工厂方法经常用在以下两种情况中:
第一种情况是对于某个产品,调用者清楚地知道应该使用哪个具体工厂服务,实例化该具体工厂,生产出具体的产品来。Java Collection中的iterator()
方法即属于这种情况。
第二种情况,只是需要一种产品,而不想知道也不需要知道究竟是哪个工厂为生产的,即最终选用哪个具体工厂的决定权在生产者一方,它们根据当前系统的情况来实例化一个具体的工厂返回给使用者,而这个决策过程这对于使用者来说是透明的。
工厂方法的结构:
图1工厂方法的结构
具体例子:这是一个简单的例子,来自《深入浅出设计模式》
图2工厂方法UML图
在这里Creator就是MobileFactory,工厂方法就是productMobile(),Concrete
Creator 就是NokiaFactory,MotorolaFactory,抽象产品是Mobile,具体产品是Motorola和Nokia,每个具体产品都实现了抽象方法call(),客户端创建一个具体工厂,调用工厂方法便可以生产一种Mobile,客户端最需要的最终产品便被创建了。
MobileFactory的源代码:
package factoryMethod;
public interface MobileFactory{
public Mobile produceMobile();
}
Mobile的源代码:
package factoryMethod;
publicinterface Mobile{
publicvoid call();
}
MotorolaFactory的源代码:
package factoryMethod;
public class MotorolaFactory implements MobileFactory{
public Mobile produceMobile(){
return
new Motorola();
}
}
Nokia的源代码:
package factoryMethod;
public class Nokia implements Mobile{
public void call(){
System.out.println("Nokia producted");
}
}
Client的源代码:
package factoryMethod;
public class Client{
public static void main(String[] args){
MobileFactory mbf = new NokiaFactory();
Mobile mb=mbf.produceMobile();
mb.call();
mbf= new MotorolaFactory();
mb=mbf.produceMobile();
mb.call();
}
}
使用场合:
当一个类不知道它所必须创建对象的类或一个类希望由子类来指定它所创建的对象时,可以使用工厂方法。
分享到:
相关推荐
java设计模式之工厂方法模式 学习设计模式已经有一段时间了,但经常还是会很困惑。看书上的代码会发现很多不同的设计模式的代码结构非常相似。比如 Bridge 和 Strategy 。。。 设计模式就是我们设计过程中经常出现的...
摘要 :设计模式是面 向对 象的软件设计与 实现的关键技 术 ,如何根 据设计要...厂方法模 式是程序设计 中被广泛使 用的设计模式之一。本文重点介绍,使用工厂方法模式的一般原则,同时结合具体的实例来描述它的应用。
java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式...
Java设计模式之工厂模式 Java设计模式之工厂模式
Java 经典设计模式讲解以及项目实战 设计模式简介:主要介绍各种设计模式的概念和运用场景等 设计模式综合运用:主要是笔者在实际工作中运用到的一些设计模式综合运用事例的提炼 Spring设计模式简介:主要是讲述...
主要介绍了Java设计模式之工厂方法模式,较为详细的分析了Java工厂模式的功能、定义并给出了实例代码加以总结分析,需要的朋友可以参考下
Java设计模式05工厂方法模式
设计模式之工厂模式Java实现和类设计图,包括简单工厂模式、工厂方法模式和抽象工厂模式
例题简单的阐述了Java工厂模式的概念,有利于读者更好地了解Java工厂模式
工厂方法模式和简单工厂模式在结构上的不同是很明显的。工厂方法模式的核心是一个抽象工厂类,而简单工厂模式把核心放在一个具体类上。工厂方法模式可以允许很多具体工厂类从抽象工厂类中将创建行为继承下来,从而...
Java实现的工厂模式,抽象工厂,工厂方法模式
这个是http://blog.csdn.net/dawanganban/article/details/9877593博客中java设计模式的源代码。下载前请先看《设计模式——工厂方法模式》一文。
Java设计模式,工厂方法的Demo,具体的思想有很多讲得很好的老师,我是看厉风行老师的视频学的,讲得不错,简单易懂
java 设计模式 mvc模式 单例模式 代理 工厂 简单工厂
java设计模式之工厂模式(3种完整免费提供).pdfjava设计模式之工厂模式(3种完整免费提供).pdfjava设计模式之工厂模式(3种完整免费提供).pdfjava设计模式之工厂模式(3种完整免费提供).pdfjava设计模式之工厂模式(3种...
Java设计模式之工厂模式实现,供大家一起共同分享学习。
1、爪哇语言结构性模式之变压器模式介绍 2、爪哇语言抽象工厂创立性模式介绍 3、工厂方法创立性模式介绍 4、单态创立性模式介绍 5、单态创立性模式介绍 6、观察者模式介绍7、责任链模式 8、设计模式之Observer 9、...
JAVA 设计模式: 工厂模式 代理模式 迭代模式 责任链模式 源码