学习目标:
- 掌握GRASP
学习内容:
GRASP(General Responsibility Assignment Software Patterns,通用责任分配软件模式)原则是一组设计原则和模式,旨在帮助软件设计人员合理地分配类和对象的责任。GRASP原则由Craig Larman在其著作《Applying UML and Patterns》中提出,主要包括以下九个模式:
- 信息专家(Information Expert):
定义:将某个职责赋予拥有所需信息的类。
目的:通过将职责分配给拥有所需数据的类来减少耦合和提高内聚性。
示例:订单类应计算订单总价,因为订单类拥有订单项的信息。 - 创建者(Creator):
定义:将创建某个对象的职责赋予与该对象存在某种关系的类。
目的:确保对象在合理的地方被创建,减少系统中的不一致性。
示例:订单类可以创建订单项,因为订单包含订单项。 - 控制器(Controller):
定义:将处理系统事件的职责赋予表示用例场景的类或表示系统中协调者的类。
目的:将系统事件的处理集中在一个或少数几个类中,从而简化系统结构。
示例:在一个在线购物系统中,购物车控制器负责处理添加商品到购物车的事件。 - 低耦合(Low Coupling):
定义:尽量减少类与类之间的依赖关系。
目的:提高系统的可维护性和可扩展性。
示例:通过接口而不是具体实现来进行依赖,降低耦合度。 - 高内聚(High Cohesion):
定义:尽量将相关的职责分配给同一个类,使类的职责更加单一和明确。
目的:提高类的可理解性和可复用性,减少类的复杂度。
示例:将用户界面逻辑和业务逻辑分开,分别放在不同的类中。 - 多态(Polymorphism):
定义:通过接口或抽象基类来定义通用行为,让子类实现具体行为。
目的:提高系统的灵活性和可扩展性,便于系统的扩展和维护。
示例:使用抽象的支付类来定义支付方法,由具体的信用卡支付类和支付宝支付类实现。 - 纯虚构模式(Pure Fabrication):
定义:创建一个不基于问题域的类来实现高内聚、低耦合的设计。
目的:解决由于直接分配职责而导致的内聚性和耦合性问题。
示例:创建一个数据访问对象(DAO)类来处理数据库操作,从而避免将数据库操作分配给业务类。 - 间接性(Indirection):
定义:通过引入中间类或接口来分离对象间的直接依赖关系。
目的:降低耦合性,提高系统的灵活性和可维护性。
示例:使用服务层来隔离业务逻辑和数据访问层。 - 防止变异(Protected Variations):
定义:通过封装和抽象来隔离容易变化的部分,防止变化影响其他部分。
目的:提高系统的稳定性和可维护性。
示例:使用策略模式来隔离不同的算法实现,使得算法的变化不会影响调用它们的代码。
GRASP原则通过提供一套系统化的设计指导,帮助开发人员在软件设计过程中做出合理的决策,创建高内聚、低耦合的系统,提高软件的可维护性、可扩展性和灵活性。
标签:定义,原则,示例,系统,订单,讲解,GRASP,耦合 From: https://blog.csdn.net/weixin_56431011/article/details/140118775