云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

天翼云_晋中企业网站建设_高性能

小七 141 0

天翼云_晋中企业网站建设_高性能

本博客介绍了6部分系列的第5部分,该系列的第5部分将面向对象设计模型与ABAP结合使用,并获得了良好的效果。

第1部分-将一个简单的过程模型转换为其等效的OO设计,在线自助建站系统,重点是封装和抽象的OO原则。

第2部分-通过重构程序来进一步探索抽象将选定的静态类转换为可实例化类。

第3部分-进一步重构程序,以利用继承的OO原则。

第4部分-坚持单一责任原则,对程序进行优化,将每个类限制为只执行其预期的操作。

第5部分-删除不再服务于某个类的类目的

第6部分-引入单例OO设计模式,云服务器那个好,消除了所有静态类。

为了回顾前面的博客,我们采用了一个包含多个责任类的程序,并对其进行了转换,使每个类只有一个责任。然而,我们注意到,在使航班报告、承运商报告和订舱报告符合单一责任原则之后,我们的更改使这三个类除了名称外,彼此完全重复。以下是我们在上一篇博客中留下的源代码:

打开你最喜欢的ABAP编辑器,云购,复制这个ABAP程序,并跟随我们应用更改来删除不再有用的类。对于那些网站上没有ABAP2XLSX的用户,请用以下源代码替换类excel\u电子表格\u管理器:

并在报告语句后包含以下本地异常类定义:

动机

我们一直在改进示例程序,并应用了每一组更改,每一个变化都使其在进行后续维护工作时具有更大的弹性。当我们开始时,航班报告、承运人报告和订票报告各有其独特的处理。从那时起,我们通过让这些类从超类报告继承来整合一些处理,然后从这些类中删除代码,使它们符合单一责任原则。相应地,这些类中那些以前相互区别的方面被消除了,从而产生了三个几乎相同的类。

删除不必要的类

首先,通过以下方式更改类报告:

从类定义中删除限定符摘要,将其替换为最终限定符。删除生成报表方法定义。删除受保护的节头(这将导致当前的\u report方法现在被定义为公共方法)。

完成后,report类的定义应如下所示:

此时继承自class report的class flight \u report的语法检查将失败,物联网智能水表,网云服务器,它现在不能有任何子类,因为我们已经将限定符final添加到了它的类定义语句中。

接下来,进行以下更改:

删除class flight\u report。删除类别报告。删除班级预订报告。在类process\u driver的方法drive\u process中,执行以下操作:将可变飞行报告的名称更改为"报告",并将其类型更改为"报告引用"。删除变量carrier\u report和booking\u report的定义。在CREATEOBJECT语句中,将变量名flightu report更改为report。从create object语句中删除carrier\u report和booking\u report。将对flight\u report->produce\u report的调用更改为report->present\u report。将对方法carrier\u report->produce\u report的调用更改为report->present\u report。将调用更改为方法booking\u report->produce\u report to report->present\u report.

完成后,方法drive\u进程中的代码应如下所示:

此时语法检查将再次通过。

此时执行程序应能证明它仍然像以前一样工作。

摘要

我们已经为现在和最终版本做了足够的更改代码的图像如下:

尽管在以前的更改中引入了类继承,但这里应用的更改现在已经删除了任何继承的使用,这是一个很好的例子,说明了如何不断改进代码也会导致代码的简化。

下一步是什么?

使用这个简单的示例程序,我们可以探索面向对象编程的其他概念。它仍然有本地静态类。下一步是重构程序,这样就不会保留任何静态类。本系列的第6部分将在博客中介绍如何使用ABAP的面向对象设计模型。