设计模式系列-面向对象葵花宝典-面向对象实战
声明:本系列为面向对象葵花宝典一书学习总结内容,原作者博客链接
第二部分:面向对象实战
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. 实现模型
类
访问控制
继承
继承方式
多态
抽象类
接口