API Factory Klasse
CLASS zcl_my_factory DEFINITION PUBLIC CREATE PUBLIC.
PUBLIC SECTION.
CLASS-METHODS: create_instance
IMPORTING iv_interface type string
RETURNING VALUE(ro_instance) type ref to object.
CLASS-METHODS: create_my_api
RETURNING VALUE(ro_instance) type ref to zif_my_api.
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
CLASS zcl_my_factory IMPLEMENTATION.
METHOD create_instance.
data(lv_class) = iv_interface.
replace 'ZIF_' in lv_class with 'ZCL_'.
try.
create object ro_instance type (lv_class).
catch cx_root into data(lx_exc).
ENDTRY.
ENDMETHOD.
METHOD create_my_api.
return cast zif_my_api( create_instance( |ZIF_MY_API| ) ).
ENDMETHOD.
ENDCLASS.
API Interface
INTERFACE zif_my_api
PUBLIC .
METHODS execute IMPORTING iv_input TYPE string
RETURNING VALUE(rv_result) TYPE string.
ENDINTERFACE.
API Default Implementierung
CLASS zcl_my_api DEFINITION PUBLIC CREATE PUBLIC .
PUBLIC SECTION.
interfaces zif_my_api.
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
CLASS zcl_my_api IMPLEMENTATION.
METHOD zif_my_api~execute.
return |API executd: { iv_input }|.
ENDMETHOD.
ENDCLASS.
Aufruf
DATA(lo_api) = zcl_my_factory=>create_my_api( ).
out->write( lo_api->execute( |Demo Kontext| ) ).