*&---------------------------------------------------------------------*
*& 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
*& 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