工厂模式--业务中的使用
一、适用场景
如果业务逻辑中有很多不同的分支,拿支付举例,如微信支付、支付宝支付、现金支付
,并且可以预见到后续会进行扩展,如增加银行卡支付
,则可以使用工厂模式。
二、代码展示
1. 定义支付的抽象方法接口
public interface PayMethod {
public void pay();
}
2.定义工厂
public interface PayFactory {
public PayMethod getInstance();
}
每次获取实例,返回一个PayMethod的具体实现
3.实现不同类型的支付方法
public class AlipayProcess implements PayMethod {
public void pay() {
System.out.println("Alipay pay method");
}
public AlipayProcess() {
}
}
public class WechatpayProcess implements PayMethod {
public void pay() {
System.out.println("wechat pay method");
}
public WechatpayProcess() {
}
}
4.实现工厂
public class AlipayFactory implements PayFactory {
public PayMethod getInstance() {
return new AlipayProcess();
}
public AlipayFactory() {
}
}
public class WechatpayFactory implements PayFactory {
public PayMethod getInstance() {
return new WechatpayProcess();
}
public WechatpayFactory() {
}
}
5.使用map将对应实现存储到内存中
static public final Map<String,Object> typeMap =new HashMap<String, Object>() {
//实例初始化块
{
put("Alipay",new AlipayFactory());
put("Wechatpay",new WechatpayFactory());
}
};
使用时通过业务代码判断具体走什么支付方式,获取对应的facotry