• UML和模式应用学习笔记(9)——GRASP:基于职责设计对象


      UML与设计原则

      由于UML只是一种标准的、可视化建模语言,了解它的细节并不能教会你如何用对象思想来思考,而对象思想正是此文的主题。UML有时候被描述成一种“设计工具”。最关键的软件开发工具是受过良好设计原则训练的思维,而不是UML或任何其他技术。

      OO设计总得来说,是基于职责驱动设计(RDD)所代表的内在含义是考虑怎样给协作中的对象分配职责。

      职责和职责驱动设计

      思考软件对象设计以及大型构件的流行方式是考虑其职责、角色和协作。这是被称为职责驱动设计的大型方法的一部分。在RDD中,我们认为软件对象具有职责,即对其所作所为的抽象。UML把职责定义为“类元的契约或义务”。就对象的角色而言,职责与对象的义务和行为相关。职责分为以下两种类型:行为和认知。

      对象的行为职责包括:

    • 自身执行的一些行为,如创建对象或计算。
    • 初始化其他对象中的动作。
    • 控制和协调其他对象中的活动。

      对象的认知职责包括:

    • 对私有封装数据的认知。
    • 对相关对象的认知。
    • 对其能够导出或计算的事物的认知。

    在对象设计中,职责被分配给对象类。例如,我可以声明“Sale负责创建SalesLineItems”(行为职责),或“Sale负责认知其总额”(认知职责)。

    准则:对于软件领域对象来说,由于领域模型描述了领域对象的属性和关联,因此其通常产生与“认知”相关的职责。

      职责与方法并非同一事物,职责是一种抽象,而方法实现了职责。

      RDD也包括了协作的思想。职责借助于方法来实现,该方法既可以单独动作,也可以与其他方法和对象协作。RDD是一种隐喻。RDD是思考OO软件设计的一般性隐喻。把软件对象想象成具有某种职责的人,他要与其他人协作完成工作。RDD使我们把OO设计看做是有职责对象进行协作的共同体。

    关键点:GRASP对一些基本的职责分配原则进行了命名和描述,因此掌握这些原则有助于支持RDD。

      GRASP:基于OO设计的系统方法

      GRASP:使用职责进行OO设计的学习工具

      GRASP原则或模式是一种学习工具,它能帮助你理解基本对象设计,并且以一种系统的、合理的、可以理解的方式来运用设计推理。对这种设计原则进行理解和使用的基础是分配职责的模式。

      职责、GRASP和UML图之间的联系

      在编写代码或建模时,如何给对象分配职责。在UML中,绘制交互图时考虑这些职责(实现方法)的时机。从以下图可以看出,Sale对象具有创建Payment的职责,具体实现是,使用makePayment消息向Sale发出请求,Sale在相应的makePayment方法中进行处理。此外,完成这个职责需要通过写作来创建Payment对象,并调用其构造器。

      因此,当我们在绘制UML交互图时,就是在决定职责的分配。

    下一篇文章就关于使用GRASP的对象设计给出一个示例

    技术追求卓越 梦想创造未来 ——Daywei

  • 相关阅读:
    Android studio ocr初级app开发问题汇总(含工程代码)
    面试题思路,25匹马 5个跑道取前三,前五,最少比赛次数--七次
    中国计算机学会推荐国际学术会议和期刊目录(CCF)2019年
    swift 数组部分排序
    SceneKit下关于修改SCNNode 的Shader展示自定义图形
    汇编语言实现字母下落效果
    组合数计算-java
    miniblast_hash算法c语言实现
    日常开发知识点备忘
    骑士周游问题跳马问题C#实现(附带WPF工程代码)
  • 原文地址:https://www.cnblogs.com/Daywei/p/2189546.html
Copyright © 2020-2023  润新知