这个系列是早前发布在部门wiki上的,引导组里的兄弟入门OOD,希望同样对刚刚走到OOD门前的同学有用。
现实中的每个人都要承担各式各样的职责,这些职责通常是由他面对的"客户"所决定的,比如一个部门经理,面对老板他的职责是执行、汇报工作等,面对部门员工他的职责是分派任务,监控执行等,面对客户他的职责是了解需求、解答疑问等;如果回到家,面对老人他的职责是尽孝道,面对孩子他的职责是抚养教育。。。这些职责取决于面对的"客户",对这个"客户"的职责不能用在那个"客户"身上,不能乱,一乱就坏了。
同样,软件世界中的对象也应该是这样的,如果它要面对多个客户,需要为每个客户提供该客户关心的职责,"
不应该强迫客户依赖于它们不用的方法"。这就是所谓的接口隔离原则(ISP)。
我们系统中需要使用接口隔离原则的地方不多,因为大部分类只有一个客户。值得一提的是消息监听类的实现,比如补单模块的补单监听器类,这个类的设计如下:
这个ReissueListener在AppRequestHandler之外,又实现了一个ReissueService接口,为什么要这样做而不是直接把补单逻辑放到AppRequestHandler的handleAppRequest方法中呢(事实上我们有好多监听器类是直接把业务逻辑实现在这个方法中了)?
我们可以这样来看这个问题:补单这个地方使用了MQ,MQ只是一个纯技术上的实现方式,没有业务上的意义,从业务角度讲,补单完成后,负责补单的程序需要调用补单成功的逻辑,这里"负责补单的程序"是ReissueListener的一个客户,我们要为它提供一个调用接口,定名为ReissueListener。但是因为架构解耦和性能方面的考虑,补单程序需要从MQ接收补单成功的消息而不是直接被"负责补单的程序"调用了,针对MQ这个新客户,架构的基础设施里面规定了一个AppRequestHandler接口,所有监听消息的实现都需要实现它。
为消息监听器类保留有业务意义的接口总是有意义的,不仅保存了监听器类的业务意义,而且使它更便于单元测试。
遵循ISP的关键是明确软件类的客户和它们的需求,然后分别予以抽象。
- 大小: 22.6 KB
分享到:
相关推荐
OOD 设计基本原则包括 OCP 原则、里氏替换原则、依赖倒置原则、接口隔离原则、聚合与继承原则、单一职责原则、Separation of concerns Principle 和 Pareto Principle 等。 OCP 原则(Open-Closed Principle)是 ...
1. **SOLID原则**:SOLID是五个面向对象设计原则的首字母缩写,包括单一职责原则、开闭原则、里氏替换原则、接口隔离原则和依赖倒置原则。这些原则指导我们编写可维护、可扩展的代码。 2. **设计模式**:设计模式是...
8. ** SOLID原则**:SOLID是面向对象设计的五个基本原则,包括单一职责原则(SRP)、开闭原则(OCP)、里氏替换原则(LSP)、接口隔离原则(ISP)和依赖倒置原则(DIP)。这些原则指导我们编写易于维护和扩展的代码...
7. **原则与指导方针**:OOD遵循一些基本原则,如 SOLID 原则,包括单一职责原则(SRP)、开闭原则(OCP)、里氏替换原则(LSP)、接口隔离原则(ISP)和依赖倒置原则(DIP)。这些原则有助于创建易于理解和维护的...
4. **接口隔离原则(Interface Segregation Principle, ISP)**: 客户端不应该依赖它不需要的接口,应该将接口拆分为更小的、更具体的接口,让客户端只依赖它们真正需要的部分。 5. **依赖倒置原则(Dependency ...
4. **接口隔离原则(Interface Segregation Principle, ISP)**:客户端不应该被迫依赖它不需要的接口。这意味着应尽量避免创建过于庞大的接口,而是将其拆分为更小、更专注的接口,让客户端只依赖于自己真正需要的...
接口隔离原则(Interface Segregation Principle, ISP)是面向对象设计中SOLID原则的第五个原则,旨在解决接口设计中的一些问题,以提升代码的模块化和减少不必要的依赖。Robert C. Martin(通常被称为“鲍勃叔叔”...
5. 接口隔离原则(Interface Segregation Principle, ISP):不应该强迫客户依赖于它们不使用的接口。换句话说,接口应该细而专,不应该庞大而复杂。 文档中提到的Java setter可能是指在类中设置属性值的setter方法...
尤其在面向对象编程(OOP)中,迭代模型能够有效处理数据和行为之间的依赖关系,因为OOP的封装、继承和多态特性可以较好地隔离和管理这些依赖,降低修改一处代码对其他部分的影响。然而,迭代模型的不确定性可能让项目...
这五条原则分别是单一职责原则(Single Responsibility Principle, SRP)、开闭原则(Open-Closed Principle, OCP)、里氏替换原则(Liskov Substitution Principle, LSP)、接口隔离原则(Interface Segregation ...
4. **接口隔离原则 (Interface Segregation Principle, ISP)** - 不应强迫客户依赖他们不需要的方法。这意味着应当将大而全的接口拆分为更小、更具体的接口,让客户端只依赖于需要的方法。 5. **依赖倒置原则 ...
接口隔离原则建议不要创建庞大的接口,而是应该为不同的客户端提供多个具体的接口。这样可以避免“客户端”被迫依赖它们不使用的接口,从而降低了类间的耦合度,提高了系统的灵活性。 #### 5. 依赖倒置原则...
SOLID原则包括单一职责原则(SRP)、开闭原则(OCP)、里氏替换原则(LSP)、接口隔离原则(ISP)和依赖倒置原则(DIP)。其中,SRP确保每个类只有一个明确的责任,OCP让代码对扩展开放、对修改关闭,LSP保证子类...
4. **接口隔离原则(Interface Segregation Principle, ISP)**:客户端不应该被迫依赖它不使用的方法。这意味着应将大而全的接口拆分为更小、更专注的接口,让客户端只依赖于需要的部分。 5. **依赖倒置原则...
5. **接口隔离原则**:避免让一个接口承担过多的职责,将大的接口拆分为更小、更专注的接口。 6. **迪米特法则**:一个对象应该对其他对象有最少的了解,减少对象之间的交互,增加系统的解耦。 7. **合成/聚合复用...
这些原则源自Bob大叔(Uncle Bob)的经典文章,他强调了五个主要原则,它们分别是单一职责原则(SRP)、开闭原则(OCP)、里氏替换原则(LSP)、接口隔离原则(ISP)和依赖倒置原则(DIP)。** ### 单一职责原则...
4. **接口隔离原则(Interface Segregation Principle, ISP)**:提倡将大接口分解成多个小接口,以避免实现类被迫依赖它们不需要的方法。这有助于实现更细粒度的控制,并减少不必要的依赖关系。 5. **合成/聚合...
设计时需遵循一些基本原则,如单一职责原则(SRP)、开闭原则(OCP)、里氏替换原则(LSP)、接口隔离原则(ISP)和依赖倒置原则(DIP),它们有助于提高代码的可读性、可扩展性和可维护性。 “实用面向对象软件...
2. **设计原则**:试题(4、5)涉及了开闭原则、里氏替换原则、依赖倒置原则和接口隔离原则。这些原则都是为了提高系统的可维护性和复用性。例如,开闭原则强调对扩展开放,对修改关闭;里氏替换原则保证子类替换...