posts - 80,comments - 749,trackbacks - 2

已经好多天没有写blog了,原因是从南京转到北京工作,还不太习惯,工作也很忙,上班时间不可以登陆blogjava这样的网站,下班后又要会会多年没见的一些老朋友(或者从来就没有见过的朋友),回到酒店又没有上网的条件——“上帝啊!上地大厦居然不能上宽带!”

随着这两天工作的深入,我们项目组遇到了一些问题,我将其中一个我认为很有价值又很有争议的问题抽象出来写在下面,供大家讨论。

项目组已经决定了要在后台系统的组织上采用Facade+懒加载的形式。这个方案意味着要为Facade提供多个多级多层次的get方法,以便上层业务能根据自己的需要直接获得关心的组件或关心的对象。并且如果在整个运气期都没有一个对象去get某个对象的话,后者很可能不被装载,其它的对象和组件也只在需要时载入并运行。这个方案基本通过。现在的问题是有人提出少数组件应该具有伸缩性,所以应该采用容器+Service的形式实现,事实上Facade太死板不够灵活,服务模式有很多能力是Facade模式所没有的,所以应该加入。反对者(包括作者)认为既然已经有了一种解决方案,为什么还要另一种方案的参与呢。争论使得项目组的所有成员在很长一段时间里(约一个多小时)都没能做其它事情。现在我把这个难题交给blogjava的朋友们,希望回帖讨论,谢谢。

做平台的泡泡

posted on 2005-03-07 09:09 Brian Sun 阅读(1246) 评论(3)  编辑  收藏 所属分类: 软件

FeedBack:
# re: 两种实现方法的争议
2005-03-07 09:10 | Brian Sun
我是这样考虑的。我们先来看一个简单的比喻。我们都知道图有两种基本的表示法——邻接表和邻接矩阵,两种方法都可以全面的反映图的信息,这意味着前一种表示法能做到的事情,后一种表示法也都能做到,同样后一种表示法所做到的事情,前一种也不会做不到。所以图只要以其中的一种表示法表示就可以了,(由于两种表示法对不同操作有不同的反应性能,所以)除非有特殊的性能需求,否则不需要使某个图同时具备这两种实现方法。

现状也很类似,既然“Facade+懒加载”与“容器+Service”同时为解决问题的两种方案,或者可以说是两种实现方法,我们的系统又相对稳定,不会出现一会要加载5个服务,一会又变成50个的情况,所以我认为两种方案不需要同时具备。此外,如果同时采用这两种实现方法的话,很可能会在设计时出现这样的尴尬局面:当程序员需要get一个对象时,他将面临一个选择,是将这个get方法放在容器里呢,还是放在门面上,或者,干脆,他两个方法都提供,“既然后期需要大量重构,不如现在来点冗余代码”的想法真的很深入人心。。。。。。

做平台的泡泡
  回复  更多评论
  
# re: 两种实现方法的争议
2005-03-07 14:07 | Samuel
呵呵,看来咱们靠的很近阿,我在中关村软件园,多联系。
你msn多少,给我来个邮件。samuel.net(at)gmail(dot)com  回复  更多评论
  
# re: 两种实现方法的争议
2005-03-07 14:47 | Brian Sun
我的邮箱是
briansun.vip@gmail.com

我的MSN上班时间都开着
javaboy2010@hotmail.com  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: