Design Patterns Explained 学习笔记(The Object-Oriented Paradigm)
第一部分主要介绍面向对象软件开发,分为面向对象的开发方法(Paradigm这个词通常翻译为范例,总感觉怪别扭的)和UML统一建模语言.
作者说1980s年代的面向对象是这样的:从需求描述中寻找名词并把他们弄成对象,在这种模式(Paradigm)下封装被定义成数据隐藏,对象被定义成具有数据的东西,方法被用做访问数据,这是有局限的,因为注意力放在了如何实现对象上.看来俺的对象管在俺出生的岁月里,哈哈.
为什么需要面向对象?
因为需求在变化,面向对象是为了更好地应对变化.
作为开发者,他们对需求是这样认识的:
1.需求是不完整的
2.需求通常是错的
3.需求(和用户)是容易误解的
4.需求不能解释全部
在面向对象之前,人们通常用功能分解(Functional Decomposition)的办法来解决问题.
给定一个任务,从数据库里获取一些形状的描述,并显示它们.通常你会这样来解决这个问题:
1.找到形状列表在数据库中的位置.
2.打开列表
3.将这个列表按照一定的规则排序
4.在显示器上显示每个形状.
其中第4个任务还可以细化为
4a.鉴别形状的类型
4b.得到形状的位置
4c.调用合适的函数根据形状的位置显示
这种思考方式很容易想到,因为小的问题别整个问题合在一起好解决得多.我们一直很自然地用这种方式解决问题,甚至于很少思考是否还有其他解决方式.
这种方式最大的问题是无法应对变化,当我要增加一个要显示的形状或者改变显示的方式的时候,因为把所有的逻辑和实现都放在一个大的功能或者模块里,最终任何改动都要改动这个功能或者模块.
内容太多了,明天再写吧.
作者说1980s年代的面向对象是这样的:从需求描述中寻找名词并把他们弄成对象,在这种模式(Paradigm)下封装被定义成数据隐藏,对象被定义成具有数据的东西,方法被用做访问数据,这是有局限的,因为注意力放在了如何实现对象上.看来俺的对象管在俺出生的岁月里,哈哈.
为什么需要面向对象?
因为需求在变化,面向对象是为了更好地应对变化.
作为开发者,他们对需求是这样认识的:
1.需求是不完整的
2.需求通常是错的
3.需求(和用户)是容易误解的
4.需求不能解释全部
在面向对象之前,人们通常用功能分解(Functional Decomposition)的办法来解决问题.
给定一个任务,从数据库里获取一些形状的描述,并显示它们.通常你会这样来解决这个问题:
1.找到形状列表在数据库中的位置.
2.打开列表
3.将这个列表按照一定的规则排序
4.在显示器上显示每个形状.
其中第4个任务还可以细化为
4a.鉴别形状的类型
4b.得到形状的位置
4c.调用合适的函数根据形状的位置显示
这种思考方式很容易想到,因为小的问题别整个问题合在一起好解决得多.我们一直很自然地用这种方式解决问题,甚至于很少思考是否还有其他解决方式.
这种方式最大的问题是无法应对变化,当我要增加一个要显示的形状或者改变显示的方式的时候,因为把所有的逻辑和实现都放在一个大的功能或者模块里,最终任何改动都要改动这个功能或者模块.
内容太多了,明天再写吧.