设计模式-工厂方法模式

工厂方法模式UML类图

在这里插入图片描述

了解过简单工厂的读者会发现,工厂模式只是在简单工厂模式中将生成产品的方法进一步抽象,从而使客户端不需要依赖具体的工厂,只需要依耐抽象工厂,从而实现客户端与具体工厂直接的解耦,如果我们再需要增加某一个产品和对应的工厂,我们只需要实现该抽象工厂的接口即可,同时客户端使用反射,由配置文件生成对应的工厂。
如上图UML类图的例子,对于Light有BulLight和TubeLight,对应生产工厂有BulCreator和TubeCreator。

使用工厂方法模式

1、将产品相同性质的方法进行的抽象

public interface Light {
	public void turnOn();
	public void turnOff();
}

2、产品的具体实现

public class BulbLight implements Light {
	@Override
	public void turnOn() {
		System.out.println("BulbLight TurnOn");
	}
	@Override
	public void turnOff() {
		System.out.println("BulbLight TurnOff");
	}
}

public class BulbCreator implements Creator{
	@Override
	public Light factory() {
		return new BulbLight();
	}
}

3、将创建产品的方法进行抽象

public interface Creator {
	public Light factory();
}

4、实现具体的创建方法

public class TubeCreator implements Creator{
	@Override
	public Light factory() {
		return new TubeLight();
	}
}

public class BulbCreator implements Creator{
	@Override
	public Light factory() {
		return new BulbLight();
	}
}

5、客户端(发现客户端可以做到完全只依赖于抽象工厂和抽象产品)

public class Client {
	public static void main(String[] args) {
		Creator creator = new BulbCreator();	//这里可以使用反射配置具体的工厂
		Light light = creator.factory();
		light.turnOn();
		light.turnOff();		
	}
}

客户端可以使用反射,实现完全解耦

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值