@zhongjianxin
2017-07-25T21:57:14.000000Z
字数 1447
阅读 1074
Trainning
1.隐藏实现细节;
2.恰当地公开接口;
3.将接口和实现分开,增强可维护性;(实现细节改变时,使用该类的客户端程序不需要改变)
1.描述联结类的层次模型;
2.通过抽象,表达共性,实现类的重用;
3.通过子类增加方法和属性以及重写方法,表达差异性;
1.屏蔽子类的差异性,针对共性/接口编程;(向上转型)
2.增强可扩展性;
类 : 对象 (隐喻:蛋糕烤箱 蛋糕, 试卷模板 试卷, 人 刘德华)
方法: 共有 私有 静态 构造
字段: 公有 vs 私有
属性: setter getter/ 与字段的关系
接口:
继承概念: 重写 重载 抽象方法 虚方法
数据与行为应该封装在一起
当我们在分辨对象职责的时候,首要需判断该职责需要对哪些数据进行操作,进而就可以将该职责分配给这些数据的拥有者。
夫运筹帷帐之中,决胜于千里之外,吾不如子房(张良)。镇国家,抚百 姓,给馈饷,不绝粮道,吾不如萧何。连百万之军,战必胜,攻必取,吾不如韩信。此三者,皆人杰也,吾能用之,此吾所以取 天下也。
重点认知:
1. 测试具有业务价值,测试的粒度,测试即文档。
2. TDD增加我们的信心,促进反馈周期,价值的稳定的叠加。
3. 重构是程序员的一项有利工具。
4. 重构 — 勿以善小而不为。
basic: 设计内容 CLass constructor getter getter extends function (instanceof Class) super
optional: private method and property
1.汽车
2.人 学生 老师 员工 关系:电脑 台式 笔记本 手机
信息专家模式(Information Expert)是GRASP模式中解决类的职责分配问题的最基本的模式。
问题:
当我们为系统发现完对象和职责之后,职责的分配原则(职责将分配给哪个对象执行)是什么?解决方案:
职责的执行需要某些信息(information),把职责分配给该信息的拥有者。换句话说,某项职责的执行需要某些资源,只有拥有这些资源的对象才有资格执行职责。优点:
信息的拥有者类同时就是信息的操作者类,可以减少不必要的类之间的关联。
各类的职责单一明确,容易理解。
寻找职责的承担者,其实就是寻找某个可以承担该职责的角色。角色又是什么?想象我们现实世界中的角色。看看我们身边,是否角色遍地可寻?BA角色负责分析需求,DEV角色负责实现功能,QA角色负责测试功能是否正确,PM角色负责管理整个项目的进度与项目成员。我们是依据什么来划分角色的?——能力。能力的体现是什么?除了诸多素质要求,最直接的体现就是“知识”。因此,所谓“角色”,就是拥有了相关“知识”从而具有相关“能力”的人。