GRASP原则:基于职责的对象设计

需积分: 10 2 下载量 197 浏览量 更新于2024-08-16 收藏 173KB PPT 举报
本资源主要探讨了对象设计的原则和方法,特别是基于职责的设计对象,强调了在面向对象设计(OOD)中如何确定方法归属和对象交互的重要性。它提到了GRASP(一般 Responsibility Assignment Software Patterns)原则,这是一种用于指导对象设计的方法论。内容包括通过迭代方法进行设计的步骤,分析从前的活动和制品对设计的影响,以及设计过程中的决策和输出。此外,还讨论了对象设计的输入来源,如场景、UML包图、补充规格说明、词汇表和领域模型。在设计活动中,开发者可以选择直接编码、进行UML建模或使用CRC卡片等其他建模技术。 在对象设计过程中,GRASP原则是核心概念,它们包括: 1. 主体(Controller):确定系统的主要控制流程,将控制权分配给合适的对象。 2. 单一职责(Single Responsibility):每个对象应只有一个明确的职责,避免职责过重导致复杂性增加。 3. 间接性(Indirection):引入中介对象以降低耦合度,使系统更灵活。 4. 多态(Polymorphism):利用继承和接口实现代码复用和可扩展性。 5. 接口隔离(Interface Segregation):避免客户端依赖他们不使用的接口部分。 6. 保护变化(Protected Variations):封装可能发生变化的部分,防止其影响整个系统。 7. 原型(Prototype):通过复制现有对象创建新对象,简化创建过程。 8. 压力下的代理(Pure Fabrication):为解决特定问题而创建辅助对象,不对应任何特定类或实体。 9. 信息专家(Information Expert):方法应定义在拥有所需信息的对象中,减少数据传输。 10. 创建者(Creator):负责创建对象的类应该知道如何创建相关的对象。 在进行对象设计时,我们需要考虑以下几点: - 分析制品如何影响对象设计:制品如领域模型和词汇表提供了关于系统实体和它们之间关系的信息,这些信息是设计的基础。 - 确定设计的深度和广度:这取决于项目的规模、复杂性和需求的清晰度,可能需要进行不同程度的建模工作。 - 输出:设计过程的产物可能包括类图、用例图、序列图以及其他UML图,这些帮助沟通设计理念和实现方式。 最后,强调了良好的设计原则和训练的思维比具体的技术如UML更为关键,因为它们能引导我们做出更合适的设计决策。对象设计是一个迭代过程,需要不断地评估和调整,以确保设计满足需求并保持灵活性。