本文介绍了 ABAP 单例模式中一个不为人熟知的知识点:可序列化 Tag 接口 IF_SERIALIZABLE_OBJECT,算是给 ABAP 单例模式的实现,开了一个口子。然而避免踏入这个坑的措施也很简单,只要一个 ABAP 类没有被赋予 IF_SERIALIZABLE_OBJECT 接口,就不会出现本文描述的这种单例行为被破坏的问题。
本文介绍了 ABAP 单例模式中一个不为人熟知的知识点:可序列化 Tag 接口 IF_SERIALIZABLE_OBJECT,算是给 ABAP 单例模式的实现,开了一个口子。然而避免踏入这个坑的措施也很简单,只要一个 ABAP 类没有被赋予 IF_SERIALIZABLE_OBJECT 接口,就不会出现本文描述的这种单例行为被破坏的问题。
单例模式保证一个类仅有一个实例,并提供一个访问它的全局访问点。 然而在某些场景下,这种设计模式的单例特性会被破坏,看下面这个例子 代码的第三行,这个ABAP类实现了接口if_serializable_object,这意味着它可以被关键字CALL TRANSFORMATION进行序列化和反序列化操作。 使用下面的ABAP代码: DATA(lo_instance) = zcl...
CREATE OBJECT lo. 简单说明一下这个报表的要点: 第三行定义了一个 ABAP 类 c1,实现了一个名叫 if_serializable_object 的接口。这个接口内没有定义任何方法,只是起一个标志作用,告诉 ABAP 框架,带有这个接口的 ABAP 类实例,可以被序列化成 XML。 c1 的 PROTECTED SECTION 定义了一个成员属性 carriers,该属性...
下图是Java用来定义一个类能够支持序列化操作的标记接口Serializable, 对应着ABAP的标记接口IF_SERIALIZABLE_OBJECT. 再回到本文的例子ZCL_JERRY_AMDP_DEMO, main方法里就执行一个逻辑:从SFLIGHTS系列的模型里读取数据。 方法get_flights从数据库表里读取数据,然后调用另一个方法convert_currency,直接在HANA数据库层面进行...
INTERFACES if_serializable_object. …. ENDCLASS. CLASS customer DEFINITION. INTERFACES if_serializable_object. ENDCLASS. DATA:account TYPE REF TO account, Customer TYPE REF TO customer, Serializable_objects TYPE TABLE OF REF TO if_seriazable_object, ...
下图是Java用来定义一个类能够支持序列化操作的标记接口Serializable, 对应着ABAP的标记接口IF_SERIALIZABLE_OBJECT.再回到本文的例子ZCL_JERRY_AMDP_DEMO, main方法里就执行一个逻辑:从SFLIGHTS系列的模型里读取数据。方法get_flights从数据库表里读取数据,然后调用另一个方法convert_currency,直接在HANA数据库层面进行...
If the class is a local class, prefix local is added in front of the name, separated by a point (.), to distinguish it from a global class of the same name. Object parts of superclasses in which the interface IF_SERIALIZABLE_OBJECT is not implemented are not serializable and do not ...
Java has its own tag interface for serialization, Serializable. ( just exactly the same logic as if_serializable_object in ABAP ). When the serialization is performed, JDK will check whether the instance has implemented this interface by instanceof. In ABAP we have similar keyword to achieve ...
下图是Java用来定义一个类能够支持序列化操作的标记接口Serializable, 对应着ABAP的标记接口IF_SERIALIZABLE_OBJECT. 再回到本文的例子ZCL_JERRY_AMDP_DEMO, main方法里就执行一个逻辑:从SFLIGHTS系列的模型里读取数据。 方法get_flights从数据库表里读取数据,然后调用另一个方法convert_currency,直接在HANA数据库层面进行...