面向对象系统分析与设计(4)
引子
- 为了让具有不同背景的角色(比如 user、customer 等)能够准确地获取需求,引入了类图、用例图、时序图、状态机图等等手段
UP建模
UP建模的四大阶段:
- 初始阶段:主要从此阶段拿到需求。搞定最关键部分的元素。占比10%。
- 详述阶段:填充细节,占比约80%。
- construction 阶段:补充剩下的。(不理会)
- transition 阶段:需求变更时进入此阶段。(不理会)
A Coder,a Programmer,a Developer
说明:本文分析的是 SpringFrameWork(5.0.5.RELEASE)IOC 部分的源码。
IOC:inversion of control,控制反转。应用程序将对象的控制权移交给第三方容器,并通过容器来管理这些被依赖的对象,完成了应用程序与被依赖对象的解耦。
学习项目 Github 地址:code4craft/tiny-spring
上一篇博客:tiny-spring分析笔记(1)
BeanDefinition
中,然后用BeanFactory
将它们一一注册(包括 setBean),最终实现 getBean。学习项目 Github 地址:code4craft/tiny-spring
使用 map 当作 bean 的容器,避免间接 new ,代替直接 new。
1 | public class HelloWorldService { |
- 特点:可视化、实践性强、面向对象的工业标准、多视角多结论、
- 前提:软件系统能被视为相互关联对象的集合
- 误解:
1. 被认为等同于过程或者理论
2. 被认为等同于面向对象的分析与设计
3. 被认为等同于设计指南
- 结构:
1. 基础模块(Building blocks):物、表、关系等
2. 相同的机理(Common mechanisms):要求、修饰、划分、可扩展性
3. 体系(Architecture):用例、过程、实现、部署等
- 使用 UML 的优势:提高质量、更高效。
- 从现实中抽象:获得必要的细节,过滤掉非必要的细节
- 有助于设计人员处理复杂问题:人类在处理复杂问题时存在局限性
- 集中在关键问题上
- 有助于理解需求、简捷设计、稳定系统的提升
- 更精准地反映现实
- 缩小现实与模型之间的语言鸿沟
- 定位现实的改变
分析:建立模型,收集需求
设计:模型的实现
面向对象系统分析与设计:
面向对象设计:强调**对象的定义**,以及为了满足需求对象之间的进行的**合作**
面向对象模型 OO 的作用:
副标题:《深入理解 Java 虚拟机》读书笔记(2)
推荐阅读:面试必问之JVM篇
GC:garbage collection。
程序计数器、虚拟机栈、本地方法栈这三个区域随线程生灭,所以不需要过多考虑内存的回收问题。而 Java 堆和方法区则不同,不同之处在于:
只有程序运行期间时才能知道会创建哪些对象,这部分内存分配是动态的,是垃圾收集器所关注的部分。
Dog dog = new Dog();
。java.lang.ref.SoftReference
,一般用来实现缓存(如图片缓存、网页缓存,有用但非必须)。java.lang.ref.WeakReference
,一般用来在回调函数中防止内存泄漏。副标题:《深入理解 Java 虚拟机》读书笔记(1)