1.概念:
客户端不应该依赖它不需要的接口,类间的依赖关系应该建立在最小的接口上
2.含义:
接口隔离原则的核心定义,不出现臃肿的接口(Fat Interface),但是“小”是有限度的,首先就是不能违反单一职责原则。
3.模拟场景:
一个OA系统,外部只负责提交和撤回工作流,内部负责审核和驳回工作流。
4.代码演示:
REPORT yabapooisp.
INTERFACE ireview.
METHODS:
review_workflow,
reject_workflow.
ENDINTERFACE.
CLASS review DEFINITION.
PUBLIC SECTION.
INTERFACES ireview.
ALIASES: review_workflow FOR ireview~review_workflow,
reject_workflow FOR ireview~reject_workflow.
ENDCLASS.
CLASS review IMPLEMENTATION.
METHOD review_workflow.
WRITE: /'开始审核工作流'.
ENDMETHOD.
METHOD reject_workflow.
WRITE: /'驳回工作流'.
ENDMETHOD.
ENDCLASS.
INTERFACE isubmit.
METHODS:
submit_workflow,
cancel_workflow.
ENDINTERFACE.
CLASS submit DEFINITION.
PUBLIC SECTION.
INTERFACES isubmit.
ALIASES: submit_workflow FOR isubmit~submit_workflow,
cancel_workflow FOR isubmit~cancel_workflow.
ENDCLASS.
CLASS submit IMPLEMENTATION.
METHOD submit_workflow.
WRITE: /'开始提交工作流'.
ENDMETHOD.
METHOD cancel_workflow.
WRITE: /'撤销工作流'.
ENDMETHOD.
ENDCLASS.
CLASS main DEFINITION.
PUBLIC SECTION.
CLASS-METHODS:
process.
ENDCLASS.
CLASS main IMPLEMENTATION.
METHOD process.
DATA(lo_review) = NEW review( ).
lo_review->review_workflow( ).
lo_review->reject_workflow( ).
DATA(lo_submit) = NEW submit( ).
lo_submit->submit_workflow( ).
lo_submit->cancel_workflow( ).
ENDMETHOD.
ENDCLASS.
START-OF-SELECTION.
main=>process( ).
5.代码解析:
其实接口隔离原则很好理解,在上面的例子里可以看出来,如果把OA的外部和内部都定义一个接口的话,那这个接口会很大,而且实现接口的类也会变得臃肿。