1 工厂方法模式简单介绍

工厂方法 (Factroy Method)模式:又称多态性工厂模式(Polymorphic
Factory),在这样的模式中,核心工厂不再是一个详细的类。而是一个抽象工厂,提供详细工厂实现的接口,详细创建产品交由子工厂去做,抽象工厂不涉及不论什么产品被实例化的细节。

而不同等级的产品。就相应一个不同等级的工厂,例如以下图。

图1

1.1工厂方法模式(多态性工厂模式):

工厂方法模式有四个角色: 1. 抽象产品接口 2. 详细产品类 3. 抽象工厂接口 4.详细工厂类。

1.2工厂方法的实现(建一个factroyMethod包,全部程序都放在该包下):

(1)首先建一个抽象产品接口(Computer.java)。

package factroyMethod;
public interface Computer {
public void run();
}

(2)建两个详细产品类(Dell.java、Lenovo.java)。须要实现Computer接口。

package factroyMethod;
public class Dell implements Computer {
public void run() {
System.out.println("戴尔电脑执行了");
}
} package factroyMethod;
public class Lenovo implements Computer {
public void run() {
System.out.println("联想电脑执行了");
}
}

(3)建一个抽象工厂接口(ComputerFactory.java)。

package factroyMethod;
public interface ComputerFactory {
public Computer makeComputer();
}

(4)建两个个详细工厂类(DellComputerFactory.java、LenovoComputerFactory.java)。

package factroyMethod;
public class DellComputerFactory implements ComputerFactory {
public Computer makeComputer(){
return new Dell();
}
}
package factroyMethod;
public class LenovoComputerFactory implements ComputerFactory {
public Computer makeComputer(){
return new Lenovo();
}
}

(5)建一个client程序(TestFactroyMethod.java)測试。

package factroyMethod;
public class TestFactroyMethod {
public static void main(String []args)throws Exception{
ComputerFactory computerFactory=
new DellComputerFactory();
Computer computer= computerFactory.makeComputer();
computer.run();
}
}

执行输出:

戴尔电脑执行了

从输出能够看出,依据须要生成的详细产品。调用相应的子工厂。即使产品添加了种类,仅仅要实现相应的工厂。而不须要改动工厂的源码,工厂的登记相应着产品的等级,改进了简单工厂模式的缺点。

(7)最后,我们再看一下工厂方法模式的UML图。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbWluaWRydXBhbA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

图1.1 工厂方法模式

推荐文章:

浅析JAVA设计模式之工厂模式(一)

http://blog.csdn.net/minidrupal/article/details/38323341

Author: Vicky

Introduction: 教育工作者

Sign: 前事不忘。后事之师

浅析JAVA设计模式之工厂模式(二)的更多相关文章

  1. 浅析JAVA设计模式之工厂模式(一)

    1 工厂模式简单介绍 工厂模式的定义:简单地说,用来实例化对象,取代new操作. 工厂模式专门负责将大量有共同接口的类实例化.工作模式能够动态决定将哪一个类实例化.不用先知道每次要实例化哪一个类. 工 ...

  2. Java 设计模式之工厂模式(二)

    原文地址:Java 设计模式之工厂模式(二) 博客地址:http://www.extlight.com 一.背景 本篇内容是 Java 设计模式创建型模式的第二篇.上一篇主题为 <Java 设计 ...

  3. Java设计模式之工厂模式(Factory模式)介绍(转载)

    原文见:http://www.jb51.net/article/62068.htm 这篇文章主要介绍了Java设计模式之工厂模式(Factory模式)介绍,本文讲解了为何使用工厂模式.工厂方法.抽象工 ...

  4. java设计模式2————工厂模式

    1.工厂模式介绍: 1.1.实现了创建者与调用者的分离 1.2.详细分类: 简单工厂模式 工厂方法模式 抽象工厂模式 1.3.所遵循的OOP原则: 开闭原则:对扩展开放,对修改关闭 依赖倒转原则:面向 ...

  5. java 设计模式之工厂模式与反射的结合

    工厂模式: /**  * @author Rollen-Holt 设计模式之 工厂模式  */   interface fruit{     public abstract void eat(); } ...

  6. Java设计模式之-----工厂模式(简单工厂,抽象工厂)

    一.工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的. 工厂模式在<Java与模式>中分为三类:1)简单工厂模式(Simple Factor ...

  7. Java设计模式之工厂模式(简单工厂模式+工厂方法模式)

    摘自http://blog.csdn.net/jason0539/article/details/23020989 在面向对象编程中, 最通常的方法是一个new操作符产生一个对象实例,new操作符就是 ...

  8. Java设计模式:工厂模式

    问题提出 Java的工厂模式与现实生活中的工厂的模型是很相似的.工厂是用来做什么?当然是用来生成产品.因此在Java的工厂模式的关键点就是如何描述好产品和工厂这2个角色之间的关系. 下面来仔细描述一下 ...

  9. JAVA 设计模式之 工厂模式详解

    一.简单工厂模式 简单工厂模式(Simple Factory Pattern)是指由一个工厂对象决定创建出哪一种产品类 的实例.属于创建型模式,但它不属于 GOF,23 种设计模式 (参考资料: ht ...

随机推荐

  1. java里面包的重要性-管理类文件

    包的必要性 包是用来给java源文件分门别类的,java中一个包在windows下就是一个文件夹.包的全限定名是从根文件夹開始的(\src文件夹)以点号作为分隔符,包名和包名之间使用点号隔开,java ...

  2. DNS递归查询和迭代查询的差别

    转载地址:http://blog.csdn.net/wuchuanpingstone/article/details/6720723 递归查询和迭代查询的差别 (1)递归查询 递归查询是一种DNS s ...

  3. POJ 1236--Network of Schools【scc缩点构图 &amp;&amp; 求scc入度为0的个数 &amp;&amp; 求最少加几条边使图变成强联通】

    Network of Schools Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 13325   Accepted: 53 ...

  4. 2015.05.12,外语,读书笔记-《Word Power Made Easy》 15 “如何谈论不同人的特点” SESSION 45

    TEASER PREVIEW 以-ous结尾的,描绘某人特点的词语包括: fawning(['fɔ:niŋ] adj.奉承的),servilely(['sә:vail] adj. 卑屈的, 奴隶的) ...

  5. hdoj--1028--Ignatius and the Princess III(母函数)

    Ignatius and the Princess III Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K ...

  6. Xcode的一些控制台命令

    命令 解释 break NUM 在指定的行上设置断点 bt 显示所有的调用栈帧,该命令可用来显示函数的调用顺序 clear 删除设置在特定源文件.特定行上的断点,其用法为:clear FILENAME ...

  7. HTMLWEST网页特效大全

    网页特效大全网:www.htmlwest.com 收藏一下,很不错的站.

  8. hdu 5375 Gray code 【 dp 】

    dp[i][j]表示第i位取j的时候取得的最大的分数 然后分s[i]是不是问号,s[i-1]是不是问号这大的四种情况讨论 #include<cstdio> #include<cstr ...

  9. Chrome添加Unity本地文档引擎

    前提:输入Unity后出来的第一连接 浏览器的设置: 分别填入: UnityDocs unity3d.com/cn file:///Applications/Unity/Documentation/e ...

  10. Unity 点击屏幕发射射线 代码

    1,创建一根射线 2,检查射线与其他物体的碰撞,得到碰撞信息 3,通过碰撞信息对碰撞到的物体进行处理 using System.Collections; using System.Collection ...