专栏首页别明天就今天吧面向对象的技术流程-"设计模型"

面向对象的技术流程-"设计模型"

设计阶段是整个面向对象分析和设计的高潮阶段。在设计阶段,我们将要输出设计模型,并且需要综合各种方法技巧,做出满足各种需求的设计。

设计模式主要包含两部分内容:静态模型和动态模型。

静态模型又称为"类模型",主要关注系统的静态结构,描述系统包含的类,以及类的名称、职责、属性、方法,类间关系。

(静态模型主要指导类的声明,类名称、属性名、方法名)

动态模型关注系统的动态行为,描述类本身的一些动作或者状态变化,以及类之间如何配合以完成最终的业务功能。

(动态模型指导类的实现,就是每个方法内部的具体实现过程)

静态模型:

第一步(照猫画虎):领域类映射

根据领域模型输出的领域模型图,把领域类转换为软件类,需要注意"软件类"是系统内部的一个概念,而领域类是业务领域的概念,并不是每个领域类都会最终体现在软件系统里。

如图,就像"顾客"、"屏幕"、"键盘"、"扫描仪"不需要转换。然后创建类和属性,接下里还需要创建方法,但是方法从哪来?在用例模型的描述中找动词,找到动词之后进行筛选去掉非软件类的动作,然后将找到的动词分配给软件类,比如"增加商品"、"计算总额"分配给交易类,得到如图:

第二步(精雕细琢):应用设计原则和设计模式

事实上很多人在完成上述的工作就开始编码,其实满足用户需求只是最简单的要求,而不是一个"好设计",怎么才能做到一个好设计呢,这时候就用到了"设计原则"、"设计模式"。

其实我们应用"设计原则"、"设计模式"的根本目的:可扩展性。

从设计原则(指导类的定义)看,我们发现交易类直接依赖会员卡类、购物卡类、现金类、信用卡类,不符合DIP原则,也就是高层与低层都要依赖抽象,这时我们提出一个支付接口或者抽象类,交易类依赖支付类,会员卡类等也依赖支付类。

然后从设计模式(指导类的行为)看,我们发现"信用卡"类存在优化的空间,因为国际上存在不同的信用卡,每种信用卡在支付的时候都需要接口入不同的机构,接入方式存在差异,为了封装这种差异,我们使用Bridge模式,提取信用卡处理类,这个类的职责主要是连接、认证、扣款。Unipay、Visa、MasterCard都继承信用卡处理类。

第三步(照本宣科):拆分辅助类

经过前两步的设计,设计工作基本完成,但是还有一个小动作也需要做,那就是拆分辅助类,主要目的是使我们的类在编码的时候能满足一些框架的规范,比如MVC模式,购物卡类需要拆分为购物卡类和购物卡DAO类,如图

动态模型:

主要有4种:状态模型、活动模型、序列模型、协作模型

我们基于买单这个用例的正常分支设计如图:

系统中会有很多功能,重要的功能使用动态模型来描述出来即可。

模型的目的:指导代码的编写。

本文分享自微信公众号 - 别明天就今天吧(gh_916f9a413d1e),作者:今天不晚

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-04-02

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • HttpClient一站式web开发的首选工具

    多次请求会产生多个历史记录(默认记录最近50次请求),在历史记录前出现比较符号,可以很方便的比较多次访问的结果。

    别明天就今天吧
  • 面向对象的设计原则-"里氏替换原则"

    why(目的):为什么要学习"里式替换原则",我们都知道面向对象的三大特性:封装、继承、多态,该原则就是对良好的"继承关系"定义了一些规范,通过学习理解后可以写...

    别明天就今天吧
  • 面试题-数组、链表实现栈

    栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作...

    别明天就今天吧
  • 模型|“请解释”黑盒机器学习模型的解释性

    2019年2月,波兰政府对银行法进行了修订,赋予客户在做出信贷拒绝时获得解释的权利。这是在欧盟实施GDPR的直接后果之一。这意味着,如果决策过程是自动的,银行需...

    陆勤_数据人网
  • 学界 | 谷歌团队提出应用于噪声语音识别的在线序列到序列模型

    近日谷歌团队发布了一篇关于语音识别的在线序列到序列模型,该模型可以实现在线实时的语音识别功能,并且对来自不同扬声器的声音具有识别功能。 以下内容是 AI 科技评...

    AI科技评论
  • 【技术分享】机器学习模型可解释性

    模型可解释性方面的研究,在近两年的科研会议上成为关注热点,因为大家不仅仅满足于模型的效果,更对模型效果的原因产生更多的思考,这样的思考有助于模型和特征的优化,更...

    腾讯智能钛AI开发者
  • 机器学习模型可解释性的详尽介绍

    ? 模型可解释性方面的研究,在近两年的科研会议上成为关注热点,因为大家不仅仅满足于模型的效果,更对模型效果的原因产生更多的思考,这样的思考有助于模型和特征的优...

    腾讯技术工程官方号
  • 5步将您的机器学习模型投入生产!

    构建出色的机器学习系统时,需要考虑很多因素。但是经常发生的情况是,我们作为数据科学家其实只担心项目的某些部分。

    用户6543014
  • 现代机器学习中的模型可解释性概述

    模型可解释性是当今机器学习中最重要的问题之一。通常某些“黑匣子”模型(例如深度神经网络)已部署到生产中,并且正在运行从工作场所安全摄像头到智能手机的所有关键系统...

    代码医生工作室
  • 概率图模型理论与应用

    故事尾音

扫码关注云+社区

领取腾讯云代金券