专栏Logo
介绍: OO设计,学习OO好榜样 专栏
专栏维护者

王杲杲

Java的一个基础又简单的知识点:by value

前几天,网上找了套java题目,给项目组成员做了一次考试,意图是让大家知道很多基础概念还不一定清楚,于是应该good good study,day day up。 考试之后,有同事问起一个“by value”知识点相关的题目: Given the following code: public class Test{     public ...
by 王杲杲 2007-01-24 浏览 (3906) 回复 (7) 关键字: by value

“学习OO好榜样”之Bad Smell & Refactoring

Bad Smells & Refactoring 以前做的一个培训,当时备课时还是花了一些工夫。ppt贴不上来,把备课稿贴在这,备份一个吧。   Bad Smells & Refactoring 1 题记 Any fool can write code that a computer can understand. Good programmers write ...
by 王杲杲 2007-01-22 浏览 (4162) 回复 (5) 关键字:

“学习OO好榜样”之Divergent Change(发散式变化)、Shotgun Surgery(霰弹式修改)

Divergent Change(发散式变化) 指的是“某一个类受到多种变化的影响”,A/B/C/D……多种功能变化的时候它都需要修改。 病因大致是某个类负担了多项任务,太操心了。很可能需要再拆分几个类出来,把变化封装得更细。 以前我写代码的时候有一个例子,曾经有一段时间,P_Unit类处理所有BSC单元的逻辑,但各种单板的逻辑是不一样的, ...
by 王杲杲 2007-01-22 浏览 (2480) 回复 (2) 关键字:

“学习OO好榜样”之Bridge模式

Bridge模式讲的是把抽象部分和实现部分隔离开,能够实现相互独立发展。 我对Bridge模式依然理解得不是很深入,我盼望书中给我一个简单、清晰的例子来说明该模式的应用,但书本没有能够让我满意,当然也可能是我的问题。 而且,书中的Airplane/AirplaneMaker这个例子放在这里说明Bridge是不恰当的。 Airplane和AirplaneMaker并不能代表Bridge模式中需 ...
by 王杲杲 2007-01-22 浏览 (1537) 回复 (0) 关键字:

“学习OO好榜样”之Facade模式

这个模式还是比较有用的,用于解开模块之间的复杂耦合。 从道理上讲,符合“内部高内聚、外部松耦合”的要求。从实际操作上,各个模块经常分开开发、分开维护,于是使用Facade定义清晰接口,只访问一个门面类,显然好过模块之间的多个类之间的交叉依赖、关联。
by 王杲杲 2007-01-22 浏览 (1282) 回复 (0) 关键字:

“学习OO好榜样”之Flyweight模式

该模式的中英文名称之间不是直接翻译的,但表达了这个模式的两个特征,轻量级、共享。 我理解,Flyweight模式就是为系统中需求数量多、但状态不多的轻量级对象建立一个共享实例池。 思路比较容易理解。就不多说了。
by 王杲杲 2007-01-22 浏览 (1129) 回复 (0) 关键字:

“学习OO好榜样”之Proxy模式

大家越来越像了…… 从实现形式上看,Decorator模式与Proxy模式之间的区别不大,但从用意上看,前者是想增强方法本身功能、后者是想控制所包含对象的动作。 Proxy模式的一个例子是书中的,在request方法前后增加pre、post方法来做额外工作。 原始类、Proxy类都实现相同的接口,在做了可插入性考虑的系统,Proxy类就可以以原始类的身份被插入系统 ...
by 王杲杲 2007-01-22 浏览 (1345) 回复 (0) 关键字:

“学习OO好榜样”之Decorator模式

外部接口没有变化,但内部实现“偷偷”变化了。其实也不是“偷偷”,更应该光明正大地告诉人家,你是经过装饰的,虽然都有“显示鼻子”的接口方法,但你的鼻子可能是垫了东西的。 需要注意的是,修饰过的类和被修饰的类是同类的。比如,实现相同的接口。 装饰过的类要拥有一个未被装饰类的属性。即关联关系。(合成还是聚合我就懒得区分了。) ...
by 王杲杲 2007-01-22 浏览 (946) 回复 (0) 关键字:

“学习OO好榜样”之Composite模式

个人感觉Composite模式是一个比较牛X的模式。完美地实现了“树”这一现实实体在OO软件世界的映射。 此模式巧妙之处在于,树叶和枝干实现了同一接口,但树干同时是装载该接口实现类实例的容器,树干可以容纳树叶、同时也可以再容纳树干,于是,一棵数就完美地被描绘出来了。 一个比较典型的例子就是,界面上的Panel是容器的同时、也是控件,可以容纳控件的同时也可以再容纳容器(这 ...
by 王杲杲 2007-01-22 浏览 (1399) 回复 (0) 关键字:

“学习OO好榜样”之Default Adapter模式

我觉得把Default Adapter模式和Adapter模式割裂开来,不会影响对Default Adapter模式的理解。 Default Adapter模式就是为目标接口提供一个平庸实现层,真正的实现类从此平庸实现层继承,Override其中对自己有意义的方法,而其他方法保持其平庸状态。 为Target接口所需的方法统统提供一套缺省实现,通常的做法是,除非你特别要求,否则我什么都不做。 ...
by 王杲杲 2007-01-22 浏览 (1427) 回复 (0) 关键字: