java 工厂模式与多态_浅析JAVA设计模式之工厂模式(二)

本文详细介绍了Java中的工厂方法模式,也称为多态性工厂模式。通过实例展示了如何创建抽象产品接口、具体产品类、抽象工厂接口以及具体工厂类,并在客户端程序中使用这些类进行产品实例化。工厂方法模式使得产品等级结构的扩展变得容易,增强了代码的灵活性。文章还提供了工厂方法模式的UML图,便于理解。
摘要由CSDN通过智能技术生成

1 工厂方法模式简介

工厂方法(Factroy Method)模式:又称多态性工厂模式(Polymorphic Factory),在这种模式中,核心工厂不再是一个具体的类,而是一个抽象工厂,提供具体工厂实现的接口,具体创建产品交由子工厂去做,抽象工厂不涉及任何产品被实例化的细节。而不同等级的产品,就对应一个不同等级的工厂,如下图。

8f2022f16cb0a5aaaa9ea05e108967b8.png

图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、Asus.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图。

da0c1456df4a67411454d8b0ceaa9ce6.png

图1.1 工厂方法模式

Author: Vicky

Introduction:教育工作者Sign:前事不忘,后事之师

原文:http://blog.csdn.net/minidrupal/article/details/38323457

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值