在线商店类图的两种版本,哪种更符合内聚原则?
两个在线商店类图的内聚性对比
判断哪个版本更符合内聚原则,核心看类的职责是否集中在自身属性相关的行为上:
版本1分析
版本1围绕“顾客能做什么”设计,把查看订单、取消订单这类操作都放在Customer类中。但Customer的核心属性是用户信息(比如姓名、账号),订单操作本质是对订单数据的修改/查询,放在Customer类里会让它承担额外职责,导致类的职责分散,内聚性偏低。
版本2分析
版本2把订单相关方法(查看订单、取消订单等)定义在Order类中,Customer仅持有订单集合。这种设计更符合内聚原则:
Order类拥有订单的核心数据(比如订单状态、商品列表、金额),由它负责自身的操作,职责高度集中,满足功能内聚(所有服务围绕订单生命周期管理);Customer专注于自身用户信息管理和订单列表的归属关系,职责清晰不越界。
结论
版本2的设计更符合内聚原则,每个类只负责和自身数据强相关的行为,职责单一且集中。
内容的提问来源于stack exchange,提问作者Ninorin
相关产品推荐
相关产品推荐

