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

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.javaLenovo.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: Piano
Introduction: 师

Sign:
前事不忘,后事之师



 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值