在接口(interface)中定义类型是否正确?那么属性呢?
有些编程语言只允许接口(interface)的方法签名,但在 ABAP 中我正在考虑做类似下面的代码,甚至添加更多属性,我不确定该方法是否是正确的 OO 设计:
INTERFACE zif_notif_note.
TYPES: BEGIN OF ty_note_id,
notif_num TYPE qmnum,
activity_key TYPE aknum,
END OF ty_note_id.
DATA: id TYPE ty_note_id READ-ONLY.
METHODS get_id
RETURNING VALUE(r_id) TYPE ty_note_id.
ENDINTERFACE.
如果我需要使用这个类型作为另一个类的输入参数怎么办?那我应该更好地定义 DDIC 结构吗?
最佳答案
关于您的第一个问题:没有什么可以反对在接口(interface)中定义类型。
第二个问题...
您可以在 ABAP OO 中完成许多在其他面向对象语言(如 Java 或 C++)中无法完成的事情。例如,你可以定义一个 FINAL ABSTRACT CLASS
这是无意义的,你可以在一个接口(interface)中定义静态方法 (CLASS-METHODS
),在我看来这是对对象的异端面向编程。
我从来没有定义属性,除非它们是接口(interface)中的CONSTANT
,因为没有理由这样做。它们将被自动标记为 PUBLIC
,这实际上打破了封装原则。
所以答案是:这是可能的,但在这样做之前要三思而后行,因为它可能会破坏实现接口(interface)的类的封装。
关于oop - 从 OOP 的角度来看,在接口(interface)中声明类型/属性是否正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57395999/