浅析JAVA设计模式之工厂模式(二)
来源:互联网 发布:数据库设计经典案例 编辑:程序博客网 时间:2024/05/01 03:35
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)建一个客户端程序(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图。
图1.1 工厂方法模式
推荐文章:
浅析JAVA设计模式之工厂模式(一)
http://blog.csdn.net/minidrupal/article/details/38323341
Author: Vicky
Introduction: 教育工作者
Sign: 前事不忘,后事之师
- 浅析JAVA设计模式之工厂模式(二)
- java设计模式之二工厂模式
- 浅析JAVA设计模式之工厂模式(一)
- 浅析JAVA设计模式之工厂模式(三)
- Java设计模式(二):工厂模式(Factory)之简单工厂
- Java设计模式(二):工厂模式(Factory)之工厂方法
- 浅析设计模式之抽象工厂模式
- JAVA设计模式之二抽象工厂
- JAVA设计模式之二:工厂模式(简单工厂模式+工厂方法模式)
- Java设计模式之二(工厂方法模式)
- JAVA设计模式之抽象工厂模式 (二)
- JAVA设计模式之二:抽象工厂模式
- (二)Java设计模式之简单工厂模式
- 浅析JAVA设计模式之代理模式(二)
- 浅析JAVA设计模式之单例模式(二)
- 设计模式之工厂模式(二)之工厂方法模式
- 浅析设计模式之工厂方法
- 二 设计模式之工厂方法模式
- AfxMessageBox和MessageBox区别
- 堆排序
- iOS_18_控制器切换_NavigationController_push方式_传递数据
- 98_定时器,计时器
- 关于paypal支付集成
- 浅析JAVA设计模式之工厂模式(二)
- 冒泡排序(Java)
- Windows Phone 8.1 Update主要更新内容汇总
- hdu 2046 骨牌铺方格(递推)
- 第一篇博客
- hdu 1207 汉诺塔II
- POJ 3628 Bookshelf 2 (01背包)
- 使用STL的next_permutation函数生成全排列(C++)
- bzoj1050 [HAOI2006]旅行comf