ABAP设计模式之---“外观模式 (Facade Pattern)”

1. 目的

为子系统的一组接口提供一个一致、精简的访问界面。

外观模式定义了一个高层接口,这个接口使得这一子系统(或一组相关的功能)更加容易使用。

2. 使用场景

类比:

  • 外观模式也成为门面模式。其实,在现实世界中,我们能发现好多“门面”的例子。门面相当一个对外的窗口,提供了特定的服务,窗口后面隐藏了信息/组织的复杂度。你能找到合适的场景么 😃。
  • 例如,你在进行理财投资时,可以单独去开户和自己选择股票,例如茅台、五粮液、格力电器等等。当公司的经营状况发生变化时,你可能需要进行相应的调整,也即调仓。如果你对于股市并不是很了解,一个“偷懒”的方式投资方式就是----买基金,可以是行业基金,可也是指数基金等等,对于基金内的股票组合,你无需操心,基金经理会帮你打理。基金经理/公司可以看成是股票市场的一种“门面”。

解析和用法:

  • 外观模式是最常用的模式,当不同模块,不同系统间做集成时,facade可以清楚的划分职责,降低模块间的耦合
  • 具体到使用方法,首先,在设计阶段,应当有意思地将不同的功能层分离。例如经典的三层架构模型。层与层之间建立Facade。
  • 其次,在开发阶段,使用Facade来提供一个简单的接口,可以减少类之间的耦合。
  • 第三,在运维阶段,可以使用Facade来隔离高复杂度的遗留代码,让新对象与Facade交互,Facade用于处理与遗留代码交互的复杂集成。

外观模式体现的设计原则:

  • 依赖倒置原则,client仅依赖于facade的接口,不依赖接口内的实现细节
  • 迪米特法则的思想,client只需要与facade交互,避免了托朋友的朋友办事,降低系统的耦合

3. 类图

client只需要与facade类定义好的接口对象交互,facade屏蔽了子系统的信息和复杂性。
在这里插入图片描述

在做集成开发时,有意识地使用facade模式,将有助于系统的分层和职责划分。
在这里插入图片描述

4. 代码实现

*&---------------------------------------------------------------------*
*& Report zfacade_pattern
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT zfacade_pattern.

* we may have a couple of sub-systems / sub-components
CLASS lcl_subsystem_one DEFINITION FINAL CREATE PUBLIC.
  PUBLIC SECTION.
    METHODS method_one.
ENDCLASS.

CLASS lcl_subsystem_one IMPLEMENTATION.
  METHOD method_one.
    WRITE / 'Method is executed in subsystem one.'.
  ENDMETHOD.
ENDCLASS.

CLASS lcl_subsystem_two DEFINITION FINAL CREATE PUBLIC.
  PUBLIC SECTION.
    METHODS method_two.
ENDCLASS.

CLASS lcl_subsystem_two IMPLEMENTATION.
  METHOD method_two.
    WRITE / 'Method is executed in subsystem two.'.
  ENDMETHOD.
ENDCLASS.

CLASS lcl_subsystem_three DEFINITION FINAL CREATE PUBLIC.
  PUBLIC SECTION.
    METHODS method_three.
ENDCLASS.

CLASS lcl_subsystem_three IMPLEMENTATION.
  METHOD method_three.
    WRITE / 'Method is executed in subsystem three.'.
  ENDMETHOD.
ENDCLASS.

CLASS lcl_subsystem_four DEFINITION FINAL CREATE PUBLIC.
  PUBLIC SECTION.
    METHODS method_four.
ENDCLASS.

CLASS lcl_subsystem_four IMPLEMENTATION.
  METHOD method_four.
    WRITE / 'Method is executed in subsystem four.'.
  ENDMETHOD.
ENDCLASS.

* facade class to provides a simplified interface to client
CLASS lcl_facade DEFINITION FINAL CREATE PUBLIC.
  PUBLIC SECTION.
    METHODS:
      constructor,
      method_group_a,
      method_group_b.
  PRIVATE SECTION.
    DATA:
      mo_subsys_one   TYPE REF TO lcl_subsystem_one,
      mo_subsys_two   TYPE REF TO lcl_subsystem_two,
      mo_subsys_three TYPE REF TO lcl_subsystem_three,
      mo_subsys_four  TYPE REF TO lcl_subsystem_four.
ENDCLASS.

CLASS lcl_facade IMPLEMENTATION.
  METHOD constructor.
    mo_subsys_one = NEW #( ).
    mo_subsys_two = NEW #( ).
    mo_subsys_three = NEW #( ).
    mo_subsys_four = NEW #( ).
  ENDMETHOD.

  METHOD method_group_a.
    WRITE / 'method group a......'.
    mo_subsys_one->method_one(  ).
    mo_subsys_two->method_two(  ).
    mo_subsys_three->method_three(  ).
  ENDMETHOD.

  METHOD method_group_b.
    WRITE / 'method group b......'.
    mo_subsys_two->method_two(  ).
    mo_subsys_three->method_three(  ).
    mo_subsys_four->method_four(  ).
  ENDMETHOD.
ENDCLASS.

START-OF-SELECTION.
* Client only needs interacts with facade
  DATA lo_facade TYPE REF TO lcl_facade.

  lo_facade = NEW #( ).
  lo_facade->method_group_a(  ).
  lo_facade->method_group_b(  ).

运行结果:
在这里插入图片描述

本博客专注于技术分享,干货满满,持续更新。
欢迎关注❤️、点赞👍、转发📣!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
ABAP是一种用于SAP系统开发的编程语言,其中pp模块是SAP系统中的生产计划模块,主要用于生产计划、生产过程控制和生产数据记录等。 ABAP开发在pp模块中的要点如下: 1. 熟悉pp模块的基础知识:了解pp模块的功能和流程,包括物料需求计划、生产订单、工作中心、生产版本等。这些知识对于正确理解和开发与pp模块相关的程序非常重要。 2. 掌握ABAP语言特性:ABAP作为SAP系统的开发语言,开发人员需要掌握其语法和特性,例如数据类型、变量声明、循环语句、条件语句等。这些知识将帮助开发人员编写高效且可靠的pp模块程序。 3. 理解生产计划数据结构:pp模块涉及的数据结构较为复杂,包括物料清单、工艺路线、生产订单等。开发人员需要了解这些数据结构的组成和关系,以便能够正确地读取和处理这些数据。 4. 开发报表和界面程序:PP模块通常需要输出各种类型的报表,如生产订单报表、工序报表等。开发人员需要根据用户需求设计和开发这些报表,并保证它们的准确性和易用性。 5. 数据验证和错误处理:在pp模块开发中,数据的准确性和可靠性非常重要。开发人员需要编写适当的代码来验证用户输入的数据,并能够处理各种可能的错误情况,以保证系统的稳定性和可靠性。 总之,ABAP开发在pp模块中需要掌握相关的知识和技术,包括pp模块的基础知识、ABAP语言特性、数据结构、报表和界面开发以及数据验证和错误处理等方面。只有掌握这些要点,才能够开发出高质量和高效率的pp模块程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SAP-nkGavin

给作者赏杯咖啡

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值