设计模式系列-面向对象葵花宝典-面向对象实战

时间:2022-04-27 15:30:51

设计模式系列-面向对象葵花宝典-面向对象实战

声明:本系列为面向对象葵花宝典一书学习总结内容,原作者博客链接


第二部分:面向对象实战

3. 对象全流程概述

面向对象的技术流程可以概括如下:
需求模型
通过和客户沟通,结合行业经验和知识,明确要求客户的需求。
领域模型
基于需求模型,提炼出领域相关的概念,为后面的面向对象设计打下基础。
领域模型
以领域模型为基础,综合面向对象的各种设计技巧,完成类的设计。
实现模型
以设计模型为基础,将设计模型翻译为具体的语言实现,完成编码。

4. 需求模型

4.1. 需求详解
- 需求:对客户来说有价值的事情(客户的目的)
- 功能:系统为了实现客户价值而提供的能力
- POS 机:“买单”是需求,“商品扫描”、“金额汇总”、“收银”等是功能,因为买完单后顾客就能将产品拿走
- 汽车:“驾驶”是需求,“发动机”、“刹车”、“加速”等是功能
4.2. 需求的重要性
据统计,有将近 1/3 的项目失败或者陷入困境时因为需求原因导致的!。
修复需求错误的问题的成本非常高昂。
维护阶段修复 = 需求阶段修复 * 200。
4.3. 需求分析
挖掘客户的问题,实现客户价值。 (需求要具体,有针对性)
比如 我要一只羊?
如果客户是用来吃的,也许你更应该提供一顿烤羊肉,或者一只大羊腿,客户会更加满意;
如果客户是用来给他小孩做宠物的,那么给一只雪白的漂亮的小羊羔也许他的小孩更高兴;
如果客户是用来生小羊的,那么给一只强壮的成年母羊是更好的选择。
需求分析 518 方法
5:5W,即 When、Where、Who、What、Why 多方面确定客户需求
1:1H,即 How 分析如何实现客户需求
8:8C,即 8 个 Constraint,包括性能 Performance、成本 Cost、时间 Time、可靠性 Reliability、安全性Security、合规性 Compliance、技术性 Technology、兼容性 Compatibility 软件设计的质量和性能
4.4. 用例方法
用例方法三段法(NEA方法):
1)正常处理(Normal):通过和客户沟通,分析需求的正常流程;
2)异常处理(Exception):在正常处理流程的步骤上,分析每一步的各种异常情况和对应的处理;
3)替代处理(Alternative):在正常处理流程的步骤上,分析每一步是否有其它替代方法,以及替代方法如何做
4.5. 功能
用例中
那些需要系统完成的事情——更简单的说:是动词——提取出来,就成为了系统的功能。

功能编号 功能描述 涉及用例
001 银行卡验证 取款、存款、查询余额
002 密码验证 取款、存款、查询余额
003 点钞 取款、存款
004 验钞 存款
005 打印交易清单 取款、存款

5. 领域模型

领域模型,顾名思义,就是需求所涉及的领域的一个建模,更通俗的讲法是业务模型。

5.1. 领域建模三字经
找名词 从用例中找名词
加属性 将这些名词相关的属性找出来
连关系 找出它们的关系
具体实例分析请看原作者博客

6. 设计模型

6.1. 设计模型总览
设计模型主要包含 2 部分内容:静态模型、动态模型
静态模型主要用于指导类的声明,包括类名称,属性名,方法名
动态模型主要用于指导类的实现,主要就是每个方法内部的具体实现

6.2. 类模型
可能很多人都有这种感觉:面向对象我也懂,设计模式我也知道,设计原则我也明白,但真的要进行设计的时候,就不知道如何下手了,比如说:
对象从哪里来?
什么时候用设计模式?
如何判断设计是否正确?
什么样的设计才是优秀的设计?
面向对象类设计的具体步骤
第一步(照猫画虎):领域类映射
第二步(精雕细琢):应用设计原则和设计模式
第三步(照本宣科):拆分辅助类

7. 实现模型


访问控制
继承
继承方式
多态
抽象类
接口