CLASS num_counter DEFINITION. PUBLIC SECTION. INTERFACES my_interface1. METHODS add_number. PRIVATE SECTION. DATA num TYPE i. ENDCLASS.
CLASS num_counter IMPLEMENTATION. METHOD my_interface1~msg. WRITE: / 'The number is', num. ENDMETHOD. METHOD add_number. ADD 7 TO num. ENDMETHOD. ENDCLASS.
CLASS drive1 DEFINITION. PUBLIC SECTION. INTERFACES my_interface1. METHODS speed1. PRIVATE SECTION. DATA wheel1 TYPE i. ENDCLASS.
CLASS drive1 IMPLEMENTATION. METHOD my_interface1~msg. WRITE: / 'Total number of wheels is', wheel1. ENDMETHOD. METHOD speed1. ADD 4 TO wheel1. ENDMETHOD. ENDCLASS.
START-OF-SELECTION. DATA object1 TYPE REF TO num_counter. CREATE OBJECT object1. CALL METHOD object1->add_number. CALL METHOD object1->my_interface1~msg.
DATA object2 TYPE REF TO drive1. CREATE OBJECT object2. CALL METHOD object2->speed1. CALL METHOD object2->my_interface1~msg.
📝 输出结果
1 2
The number is 7 Total number of wheels is 4
🔍 代码解析
graph TB
A[接口 my_interface1] -->|实现| B[num_counter]
A -->|实现| C[drive1]
B --> D[add_number方法]
B --> E[msg实现]
C --> F[speed1方法]
C --> G[msg实现]
graph LR
A[调用方] --> B[接口]
B --> C[实现类1]
B --> D[实现类2]
B --> E[实现类3]
调用方只需要知道接口,而不需要知道具体的实现类。
🛡️ 3. 标准化契约
接口定义了统一的契约,确保所有实现类都遵循相同的规范。
🎯 使用场景
1. 策略模式实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
INTERFACE strategy. METHODS: execute IMPORTING data TYPE any. ENDINTERFACE.
class_algo_a DEFINITION. PUBLIC SECTION. INTERFACES strategy. PRIVATE SECTION. METHODS: algo_a_specific IMPORTING data TYPE any. ENDCLASS.
class_algo_b DEFINITION. PUBLIC SECTION. INTERFACES strategy. PRIVATE SECTION. METHODS: algo_b_specific IMPORTING data TYPE any. ENDCLASS.
2. 工厂模式支持
1 2 3 4 5 6 7 8 9 10
INTERFACE factory. CLASS-METHODS: create_object RETURNING VALUE(obj) TYPE ref to any. ENDINTERFACE.
class_product_factory DEFINITION. PUBLIC SECTION. INTERFACES factory. PRIVATE SECTION. METHODS: create_product RETURNING VALUE(obj) TYPE ref to any. ENDCLASS.
3. 事件处理
1 2 3 4 5 6 7 8 9 10 11 12
INTERFACE event_handler. METHODS: handle_event IMPORTING event_type TYPE string data TYPE any. ENDINTERFACE.
class_ui_controller DEFINITION. PUBLIC SECTION. INTERFACES event_handler. PRIVATE SECTION. METHODS: process_event IMPORTING event_type TYPE string data TYPE any. ENDCLASS.