工厂模式--业务中的使用

一、适用场景

如果业务逻辑中有很多不同的分支,拿支付举例,如微信支付、支付宝支付、现金支付,并且可以预见到后续会进行扩展,如增加银行卡支付,则可以使用工厂模式。

二、代码展示

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

三、新增支付类型操作

如果需要新增银行卡支付方式,需要新增一个CardpayFactory、CardpayProcess和map entry,符合开闭原则,但有些繁琐

posted @ 2025-05-06 16:05  卡利的亲爹  阅读(13)  评论(0)    收藏  举报