美文网首页
设计模式:工厂+策略+门面模式的应用

设计模式:工厂+策略+门面模式的应用

作者: yuzl | 来源:发表于2019-06-14 17:34 被阅读0次

使用工厂+策略模式增加系统的可扩展性

官方定义

工厂模式

定义一个创建对象的接口,让子类决定实例化哪一个类,工厂方式使得一个类的实例延迟到子类中

策略模式

定义一组算法,使每个算法封装起来,使得他们之间可以项目交换

门面模式

要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行。门面模式提供一个高层次的接口,使得子系统更易于使用

举个栗子

工厂类

public class RefundServiceFactory {

    private static Map<RefundTypeEnum, RefundBaseService> serviceMap = new HashMap<RefundTypeEnum, RefundBaseService>();

    public static void register() {
        serviceMap.put(RefundTypeEnum.COMMON_REFUND, (RefundBaseService) SpringUtil.getBeanByName("refundServiceCoreImpl"));
        serviceMap.put(RefundTypeEnum.UNION_REFUND, (RefundBaseService) SpringUtil.getBeanByName("refundUnionPayServiceCoreImpl"));
    }

    public static RefundBaseService getService(String type) {
        if (CheckUtils.isEmpty(serviceMap)) {
           //注册工厂实例
            register();
        }
        RefundTypeEnum refundTypeEnum = RefundTypeEnum.COMMON_REFUND;
        try {
            refundTypeEnum = RefundTypeEnum.valueOf(type);
        } catch (Exception e) {
        }
        return serviceMap.get(refundTypeEnum);
    }

}

调用

//策略模式+工厂模式获取具体实例
RefundBaseService refundBaseService = RefundServiceFactory.getService(refund.getRefundType());
//门面模式执行方法
refundRequestBean = refundBaseService.checkOrder(refund);

优点讲解

扩展性极强,想想看,需要扩展一个新的方法,是不是只需要增加一个实现类实现方法即可。
\color{red}{一个完美的系统,新的需求是不需要变更原有类的}

应用场景

  • 不同支付方式走不同的支付类
  • 不同状态走不同的处理类

相关文章

  • 策略模式和工厂模式在促销系统下的应用

    策略模式和工厂模式在促销系统下的应用 标签: 设计模式 策略模式 工厂模式 促销系统 php 设计模式为我们提供了...

  • 设计模式:工厂+策略+门面模式的应用

    使用工厂+策略模式增加系统的可扩展性 官方定义 工厂模式 定义一个创建对象的接口,让子类决定实例化哪一个类,工厂方...

  • 常见设计模式

    简单工厂 工厂方法 抽象工厂 单例模式 策略模式 观察者模式 责任链模式 装饰者模式 适配器模式 代理模式 门面模...

  • 设计模式之工厂模式

    设计模式之工厂模式 标签(空格分隔): 设计模式 工厂模式 设计模式的感念 设计模式的应用 工厂设计模式的产生 工...

  • OkHttp的使用之设计模式

    使用的设计模式有: 创建者模式 策略模式 门面模式 责任链模式

  • 常用设计模式 2018-09-15

    目录 代理模式 单例模式 命令模式 工厂模式 桥接模式 策略模式 装饰模式 观察者模式 门面模式 代理模式 静态代...

  • PHP-浅谈单例模式和工厂模式

    PHP中常用的设计模式有单例模式、工厂模式(简单工厂模式、工厂方法模式和抽象工厂方法模式)、适配模式、策略模式。 ...

  • 一个spring-boot自动注入策略工厂的starter (设

    一个spring-boot自动注入策略工厂的starter (设计模式:策略模式 工厂模式 单例模式) 这个项目写...

  • iOS开发之设计模式 - 策略模式

    由《大话设计模式 - 策略模式》的OC和部分Swift的语言转义 策略模式 继上一篇《简单工厂模式》 策略模式,定...

  • 设计模式

    软件开发中常用设计模式和设计原则有哪些? ##设计模式: * 1、简单工厂模式(Factory) * 2、策略模式...

网友评论

      本文标题:设计模式:工厂+策略+门面模式的应用

      本文链接:https://www.haomeiwen.com/subject/ynbpfctx.html