核心思想
在简单工厂模式的基础上进一步的抽象化 具备更多的可扩展和复用性,增强代码的可读性 使添加产品不需要修改原来的代码,满足开闭原则
优缺点
优点
符合单一职责 ,每个工厂只负责生产对应的产品 符合开闭原则 ,添加产品只需添加对应的产品类和工厂类 使用者只需要知道产品抽象类,不需要关心其它实现类。满足迪米特法则 、依赖倒置原则 和里氏替换原则
缺点
添加一个产品,需要实现对应的工厂类和产品类 每个产品需要有对应的产品类和工厂类
代码示例
产品抽象接口
public interface Pay {
void unifiedorder ( ) ;
}
抽象工厂
public interface IFactory {
Pay getPay ( ) ;
}
产品具体实现类
public class AliPay implements Pay {
@Override
public void unifiedorder ( ) {
System . out. println ( "支付宝 支付统一下单" ) ;
}
}
public class WechatPay implements Pay {
@Override
public void unifiedorder ( ) {
System . out. println ( "微信 支付统一下单" ) ;
}
}
工厂具体实现类
public class AliFactory implements IFactory {
@Override
public Pay getPay ( ) {
return new AliPay ( ) ;
}
}
public class WechatFactory implements IFactory {
@Override
public Pay getPay ( ) {
return new WechatPay ( ) ;
}
}
测试
public class AppRun {
public static void main ( String [ ] args) {
IFactory iFactory = new AliFactory ( ) ;
Pay pay = iFactory. getPay ( ) ;
pay. unifiedorder ( ) ;
}
}
public class AppRun {
public static void main ( String [ ] args) {
IFactory iFactory = new WechatFactory ( ) ;
Pay pay = iFactory. getPay ( ) ;
pay. unifiedorder ( ) ;
}
}