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

猜你喜欢

转载自caoxuhuan.iteye.com/blog/981063
今日推荐