`

ABAP类使用单例模式(转)

阅读更多
*&---------------------------------------------------------------------*
*& Report   ZHP_PATTERN_SINGLETON
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  zhp_pattern_singleton.

INCLUDE zhp_pattern_singleton_lcl.

START-OF-SELECTION.

DATA: lrf_chocolate_boiler_1 TYPE REF TO lcl_chocolate_boiler,
lrf_chocolate_boiler_2 TYPE REF TO lcl_chocolate_boiler.
DATA:   chocolate_instance_num TYPE i.

lrf_chocolate_boiler_1 = lcl_chocolate_boiler=>get_instance( ).
lrf_chocolate_boiler_2 = lcl_chocolate_boiler=>get_instance( ).

chocolate_instance_num = lcl_chocolate_boiler=>get_instance_count( ).

WRITE : / 'instance num:',
chocolate_instance_num.
IF   lrf_chocolate_boiler_1  EQ   lrf_chocolate_boiler_2 .
WRITE :/ 'equal'.
ENDIF.

---------------------------------------------------------------

Include program

*&---------------------------------------------------------------------*
*&   Include            ZHP_PATTERN_SINGLETON_LCL
*&---------------------------------------------------------------------*

CLASS lcl_chocolate_boiler DEFINITION CREATE PRIVATE.

PUBLIC SECTION.
CLASS-METHODS:get_instance RETURNING value(instance)
TYPE REF TO lcl_chocolate_boiler.
CLASS-METHODS: get_instance_count RETURNING value(instance_count) TYPE i.

PRIVATE SECTION.
CLASS-DATA unique_instance TYPE REF TO lcl_chocolate_boiler.
METHODS: constructor.
CLASS-DATA: instance_count TYPE i.

ENDCLASS.                    "lcl_chocolateBoiler DEFINITION

*----------------------------------------------------------------------*
*        CLASS lcl_chocolate_boiler IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_chocolate_boiler IMPLEMENTATION.
METHOD:constructor.
instance_count = instance_count + 1.
ENDMETHOD.                    "constructor

METHOD get_instance.
IF unique_instance IS NOT BOUND.
CREATE OBJECT unique_instance.
ENDIF.
instance = unique_instance.

ENDMETHOD.                    "get_instance

METHOD get_instance_count.
instance_count = lcl_chocolate_boiler=>instance_count.
ENDMETHOD.                    "get_instance_count

ENDCLASS.                    "lcl_chocolate_boiler IMPLEMENTATION


原文地址:http://hi.baidu.com/base/blog/item/58779e2f2b4c5f351f30893e.html
分享到:
评论

相关推荐

    设计模式 Design Parttern

    - C#中,可以通过定义静态内部类的方式来实现单例模式。 - ABAP Object中,实现方式可能略有不同。 ##### 2. 结构型模式 结构型模式涉及如何组合类和对象来获得更大的结构。这些模式可以让你的代码更加灵活和...

    webDynproForABAP基础知识

    #### 二、webDynpro for ABAP 的设计模式 webDynpro for ABAP 采用了 MVC(Model-View-Controller)设计模式。这是一种将应用程序的界面逻辑和数据逻辑分离的设计方式,使得应用程序更加模块化、易于维护和扩展。 ...

    JAVA高端开发视频(高清)下载地址

    - **设计模式**: 如单例模式、工厂模式、策略模式等经典设计模式的应用场景与实现方法。 - **框架与工具**: 常见的Java开发框架如Spring Boot、Hibernate等的使用技巧;以及IDEA、Maven等工具的高效利用。 - **性能...

    webdypro基础学习.pdf

    Web Dynpro for ABAP是SAP提供的一种用于开发企业级Web应用程序的技术,它基于Model-View-Controller(MVC)的设计模式。MVC模式有助于分离业务逻辑、用户界面和数据管理,使得应用更加模块化,易于维护和扩展。 在...

    SAP Web Dynpro的开发技术.pptx

    这两种语言都支持Model-View-Controller(MVC)设计模式,有助于简化复杂应用的开发。 在Web Dynpro for ABAP中,组件控制器(Component Controller)是核心,它在一个组件内唯一存在,不具有可视界面。自定义控制...

Global site tag (gtag.js) - Google Analytics