初探设计模式:简单工厂模式
简单工厂模式
业务场景:
单一接口,根据业务编码传参进行不同处理方式
少量业务编码基本都是用条件判断做一下简单处理,但考虑到业务后期发展,业务编码会越来越多,很容易出现 if else 嵌套地狱
这种情况,我们就考虑使用工厂模式来对业务代码进行拆分,使不同处理逻辑划分更清晰
一、创建业务接口,并定义一个业务实现方法
public interface BusinessService {
/**
* 业务应用
*/
void use();
}
二、创建实现该接口的各个实现类
public class BusinessServiceOneImpl implements BusinessService {
/**
* 业务应用
*/
@Override
public void use() {
System.out.println("业务处理方案一");
}
}
public class BusinessServiceTwoImpl implements BusinessService {
/**
* 业务应用
*/
@Override
public void use() {
System.out.println("业务处理方案二");
}
}
public class BusinessServiceThreeImpl implements BusinessService {
/**
* 业务应用
*/
@Override
public void use() {
System.out.println("业务处理方案三");
}
}
三、创建一个业务工厂类
public class BusinessServiceFactory {
public BusinessService getBusinessService(String businessCode) throws Exception {
if (businessCode == null) {
return null;
}
switch (businessCode) {
case "000001":
return new BusinessServiceOneImpl();
case "000002":
return new BusinessServiceTwoImpl();
case "000003":
return new BusinessServiceThreeImpl();
default:
throw new Exception("暂不支持此业务编码【"+businessCode+"】");
}
}
}
四、创建客户端,模拟业务请求
public class SimpleFactoryClient {
/**
* 服务消费者
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
use("000001");
use("000002");
use("000003");
use("000004");
}
/**
* 服务提供者
* @param businessCode
* @throws Exception
*/
public static void use(String businessCode) throws Exception {
BusinessServiceFactory factory = new BusinessServiceFactory();
BusinessService service = factory.getBusinessService(businessCode);
service.use();
}
}
五、分析
优点:
解耦、方便调用者创建对象、扩展性好。
缺点:
每新增一个业务功能,就要加一个对应实现类、修改工厂类的出口方法。
这样会增加系统的复杂度,不利于维护。

浙公网安备 33010602011771号