核心思想
- 在简单工厂模式的基础上进一步的抽象化
- 具备更多的可扩展和复用性,增强代码的可读性
- 使添加产品不需要修改原来的代码,满足开闭原则
优缺点
优点
- 符合单一职责,每个工厂只负责生产对应的产品
- 符合开闭原则,添加产品只需添加对应的产品类和工厂类
- 使用者只需要知道产品抽象类,不需要关心其它实现类。满足迪米特法则、依赖倒置原则和里氏替换原则
缺点
- 添加一个产品,需要实现对应的工厂类和产品类
- 每个产品需要有对应的产品类和工厂类
代码示例
产品抽象接口
/**
* 支付类
*/
public interface Pay {
/**
* 统一下单
*/
void unifiedorder();
}
抽象工厂
/**
* 抽象工厂
*/
public interface IFactory {
/**
* 获取支付类
* @return
*/
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{
/**
* 获取支付类
* @return
*/
@Override
public Pay getPay(){
return new AliPay();
}
}
/**
*
*/
public class WechatFactory implements IFactory{
/**
* 获取支付类
* @return
*/
@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();
}
}
文章来源:https://www.toymoban.com/news/detail-673657.html
public class AppRun {
public static void main(String[] args) {
IFactory iFactory = new WechatFactory();
Pay pay = iFactory.getPay();
//获取支付
pay.unifiedorder();
}
}
文章来源地址https://www.toymoban.com/news/detail-673657.html
到了这里,关于设计模式-工厂设计模式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!