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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值