论坛首页 Java企业应用论坛

设计模式visitor与builder的区别

浏览 5852 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2003-09-24  
这是以前我写的一个贴子,也是我对两者的认识, 不知是否恰当?

首先在概念上有比较大的区别。其次,Vistor的扩展性比Bridge差,比如说我们再加一个SQL Server 数据库,那么Vistor首先要加一个SQL Server 类在抽象端,其次要改实现端的接口,而Bridge只需在实现端加一个SQL Server 的子类。

visitor和bridge都指的行为和对象的结合,其不同点在于,visitor在开始的时候已经把行为与对象做了默认的组合,其动态组合只是重新delegate而已(二次反转)。而bridge并没有作行为与对象默认的组合,只是在定义的时候认为可能会有这样的组合,也就是说认为可能会有概念上的Overlap.

例如,大小杯与加奶不加奶问题中,

在bridge,认为可能会有四种不同的组合,or 少于四种的组合。
在visitor, 已经做了一些硬性的假设组合,如大杯加奶,小杯不加奶等。只不过在调用visitable中的accept()时,去真正指向大杯加奶的具体实现。

两种动态组合差别还是比较大的。
   发表时间:2003-09-25  
我认为design pattern重要的解决问题的思路
而不是内部结构
解决问题的思路才是不同pattern的区别所在
不少pattern的内部结构可以相似
0 请登录后投票
   发表时间:2003-09-25  
是啊,设计模式把继承,多态运用到了极限, 思路太巧妙了。活到老,学到老啊。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics