我们如何在OO ABAP中使用单例,有人可以举一个完美的例子。

2020-08-23 07:47发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)我们如何在OO ABAP中使用单...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我们如何在OO ABAP中使用单例,请提供一个完美的例子。 那将是很大的帮助

1条回答
土豆飞人
2020-08-23 08:27 .采纳回答

Singleton本质上是一个静态实例创建,这意味着当您请求对象的实例创建时,在同一LUW中,SAP始终会向您提出相同的实例。

您需要指定实例的创建是私有的,否则,有人将使用语句NEW zcl_temp_singleton_001()。

->我们指定CREATE PRIVATE

您需要一个静态方法来创建实例。

->静态方法不是用METHODS来描述的,而是用 CLASS-METHODS

您需要一个包含已创建实例的静态变量。

->类似方法,您必须使用CLASS-DATA

全部。

示例:

 CLASS zcl_temp_singleton_001定义
   上市
   最后
   创建私有。


   公共部分。
     类别方法get_instance
       正在返回
         VALUE(ro_instance)类型参考zcl_temp_singleton_001。
     方法set_data
       输入
         iv_valeur TYPE字符串。
     方法get_data
       正在返回
         VALUE(rv_valeur)TYPE字符串。


   专用部分。
     CLASS-DATA go_instance类型引用到zcl_temp_singleton_001。
     DATA gv_valeur TYPE字符串。

 ENDCLASS。



 类别ZCL_TEMP_SINGLETON_001实施。

   方法get_data。
     rv_valeur = gv_valeur。
   终结法。


   方法get_instance。
     ro_instance = COND#(当go_instance被绑定时
                             然后go_instance
                           ELSE NEW zcl_temp_singleton_001())。
     go_instance = ro_instance。
   终结法。


   方法set_data。
     gv_valeur = iv_valeur。
   终结法。

 ENDCLASS。


 

如何使用此代码的示例:

 REPORT ztest_fred_003。

 参数p_valeur TYPE字符串。

 DATA(mon_singleton)= zcl_temp_singleton_001 => get_instance()。
 mon_singleton-> set_data(p_valeur)。

 在程序ztest_fred_003b中执行p_display_parameter。

 
报告ztest_fred_003b。

 FORM p_display_parameter。
   DATA(mon_singleton)= zcl_temp_singleton_001 => get_instance()。
   写入/1 mon_singleton-> get_data()。
 ENDFORM。
 

一周热门 更多>