业务场景:项目中有一个支付产品,使用它购买商品后,会有支付清单,和商品清单。
常规实现
新建接口
业务逻辑实现上,会针对不同的清单通过面向接口来实现。所以会新建两个接口,如下
public interface IBill {
void addBill();
}
public interface IWares {
void addWares();
}
实现接口
public class AliPayBill implements IBill {
public void addBill() {
System.out.println("阿里支付账单");
}
}
public class AliPayWares implements IWares {
public void addWares() {
System.out.println("阿里商品清单");
}
}
调用
public class Test{
IBill bill = new AliPayBill() ;
bill.addBill();
IWares ware = new AliPayWares();
ware.addWares();
}
抽象工厂模式
public abstract class PayFactory {
public void init(){
System.out.println("初始化数据");
}
protected abstract IBill createBill();
protected abstract IWares createWares();
}
具体的创建清单逻辑又交给继承了抽象工厂的实现类。
public class AlibabaPayFactory extends PayFactory {
protected IBill createBill() {
super.init();
return new AliPayBill();
}
protected IWares createWares() {
super.init();
return new AliPayWares();
}
}
测试类:
public class Test {
public static void main(String[] args) {
AmazonPayFactory amazonPayFactory = new AmazonPayFactory();
amazonPayFactory.createBill().addBill();
amazonPayFactory.createWares().addWares();
}
}