首页 > 其他分享 >外观模式

外观模式

时间:2023-03-07 22:11:06浏览次数:32  
标签:浮动 外观 接口 测算 模式 interface public 利率

概述

设计模式一书中对于 “外观模式” 的意图描述如下:

为子系统中的u一组接口提供一个一致的界面,外观模式定义了一个高层的接口,这个接口使得这一子系统更加容易使用

具体实例

以计算浮动利率为例,由于利率可能会发生变化,并且不同的产品期次对应的浮动利率检测配置并不一样,比如每月固定日期、每个季度的第几月份的固定日期等,一般来讲,只有恰好匹配到了对应的日期才会需要涉及到浮动利率的重新测算以及对应还本付息计划(还钱的本金和利息)的修改。

假设现在我们定义了一个检测当前日期是否为生效日期的服务类 WorkDateService

public interface WorkDateService {
    boolean validWorkdDate(); // 今天是否需要执行浮动利率的测算
}

当需要进行浮动利率测算时,会根据一个参数模型根据相关的公式测算对应的浮动利率,假设现在我们也设计了利率的测算服务 RateCalService

import java.math.BigDecimal;

public interface RateCalService {
    /**
    	通过指定的利率测算参数测算最新的有效浮动利率,具体的测算参数可能需要
    	访问数据库,但是在这里略过这部分的服务接口
    */
    BigDecimal calFloatRate(RateModel param);
}

当得到最新的浮动利率时,这就直接涉及到换本付息计划的具体数额,因此需要重新测算,假设这部分我们也已经存在了对应的测算服务 RepayScheduleService

public interface RepayScheduleService {
    /**
    	通过模型参数和最新的利率测算对应的换本付息计划
    */
    List<RepayRow> calRepaySchedule(ModelParam param, BigDecimal rate);
}

目前这三个服务类都是独立的,在系统的调用端可以组合这三个接口来完成相关数据的测算,但是这可能会比较麻烦,可能大部分的客户端只需要一个直接能够检测浮动利率并完成相关数据测算的接口,因此可以单独将它们组合到一个服务类中,提供统一的方法:

public interface FloatRateService {
    void floatRateCalcluate();
}

这样客户端就只需要直接访问 FloatRateService 而不需要访问其它的子服务类,降低了系统中服务调用的难度

总结

一般来讲,“外观模式” 的主要作用在于简化接口,降低系统的耦合性


参考:

[1] 《设计模式—可复用面向对象基础》

标签:浮动,外观,接口,测算,模式,interface,public,利率
From: https://www.cnblogs.com/FatalFlower/p/17189913.html

相关文章

  • 设计模式之总述【3】【待完善】
    1概述设计模式大致上存在23种经典的设计模式。它们又可以分为三大类;而对于常用的设计模式,我们要花多点时间理解掌握。对于不常用的设计模式,我们只需要稍微了解即可。......
  • 《设计模式之禅》Proxy_Pattern--代理模式
    代理模式这一章以潘金莲和王婆以及西门庆三人的故事作为程序的对象,下面就通过西门庆与潘金莲的故事来理解代理模式,途中车速过高,各位请系好安全带,发车喽!!!什么是代理模式呢?......
  • 详细讲解23种设计模式
    详细讲解23种设计模式 工厂方法模式(FactoryMethodPattern)工厂方法模式是一种创建型设计模式,它定义了一个用于创建对象的接口,但由子类决定要实例化的类是哪一个。工......
  • 关闭引导模式
    我有一个引导程序模式对话框,我想最初显示它,然后当用户单击该页面时,它就会消失。我有以下内容:$(function(){$('#modal').modal(toggle)});<divclass="modal"id='m......
  • 多线程设计模式-全面详解(学习总结---从入门到深化)
    目录​​SingleThreadExecution设计模式​​​​机场过安检​​​​ 非线程安全​​​​ 问题分析​​​​首字母相同却未通过检查​​​​为何出现首字母不相同的情况......
  • 创建型:工厂模式-工厂方法、抽象工厂
    问题简单工厂中我们通过参数来返回不同的产品对象,如果管理的对象过多,这个工厂函数会比较庞大,且当我们需要增加一个新的产品时,需要修改这个工厂方法,违反开闭原则(对拓展开......
  • JS 设计模式
    为什么会出现设计模式随着公司业务的不断迭代和扩张,项目的复杂程度也在不断加强,如果不采取一些方法那么项目会变的难以开发及维护;而设计模式就是为了解决这样的问题诞生......
  • POM模式-Maven工程关系-聚合
    当我们开发的工程拥有2个以上模块的时候,每个模块都是一个独立的功能集合。比如某大学系统中拥有搜索平台,学习平台,考试平台等。开发的时候每个平台都可以独立编译,测试,运行。......
  • 设计模式-javascript实现【状态模式】
    定义:允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类。其主要原理是将状态封装成独立的类,并将请求委托给当前的状态对象,当对象内部状态变化时,会......
  • POM模式-Maven工程关系
    依赖【1】依赖关系:即A工程开发或运行过程中需要B工程提供支持,则代表A工程依赖B工程。在这种情况下,需要在A项目的pom.xml文件中增加下属配置定义依赖关系。 通俗理解:......