`
ajoo
  • 浏览: 453098 次
社区版块
存档分类
最新评论
文章列表
场景一: 个人喜欢state-based的单元测试。(定义见mock is not stub)。 可是有些时候,比如在测试一些使用java.sql.Connection, ibatis SqlMapClient等接口的类的时候,明显写stub很不好。(1,接口很大,有很多不相干的东西。2,版本一旦 ...
最近。age0提出了一个OO设计的问题。因为这个例子更加贴近生活,是我们老百姓所喜闻乐见的商场折扣问题,所以我准备改铉更张用这个例子了。具体的例子请看: http://forum.iteye.com/viewtopic.php?t=17714&start=0 简要的说,需求是: 引用有这样一家超市,对顾客实行会员制,会员目前分为两个等级:金卡及银卡。 每次会员购物时,都会根据会员等级提供不同的折扣优惠和返点。 这个需求并不复杂。任何一个普通的java程序员都可以轻松搞定。 age0就给出了几个方案供大家选择。 一个大家普遍认可的方案是: // client: string id ...
已经有点感觉用ioc container来说明co不见得是个好主意了。 这个container的例子举出来,明显提出意见的人比那个简单的logging例子少了很多。 毕竟连pico是怎么回事,怎么用,很多人都还不见得了了。更不提多少人对pico的用法就是 ...
其实,前面我还忘了提一个非常重要的基本组合子:singleton。 这里补充提一下: class SingletonComponent implements Component{ private final Component c; private Object val; public Class getType();{ return c.getType();; } public synchronized Object creat ...
仍然是先用oo把轮廓划出来,我们需要建模一个接口来围绕它进行组合。 因为本文是关于co的论述,那么这个接口怎样分析出来的就暂时忽略掉了: interface Dependency{ Object getArgument(int i, Class type);; Class verifyArgument(int i, Class ty ...
迄今,发现典型的几种疑问是: 1。组合子的设计要求正交,要求最基本,这是不是太难达到呢? 2。面对一些现实中更复杂的需求,组合子怎样scale up呢? 其实,这两者都指向一个答案:重构。 要设计一个完全正交,原子到 ...
不少朋友说我的阐述很苍白无力。这让我很苦恼。我确实是拚了命地想把问题说清楚,我也有实际non-trivial的项目经验,怎么就说不明白呢?哎! 所以,还是不能不多罗嗦一下,希望能够再阐述得明白一点。 其实,所谓co,有心的朋友也许能够感觉到,它很象是设计一门语言。 它有顺序/分支,有函数调用,异常处理,基本上一个程序设计语言有的东西它都有了。这些顺序/分支作为语言的基础设施,而一些应对具体需求的原子操作,(比如WriterLogger,比如NeptuneExceptionLogger)则可以看作是语言的扩展或者库。 只不过,c/c++/java是有编译器来把源代码转化成目标代码。而co的 ...
每个小孩刚开始走路的时候都是跌跌撞撞的。 我们不自量力,妄图踩着上帝的步伐前进。结果就是这么几个简单的象白开水似的类。失望吗?是不是造物试图模仿造物主本身就是一种可笑的狂妄呢? 别急,让我们失声痛哭之前 ...
唧唧歪歪一大堆。肯定早有人不耐烦了。 "你丫还有没有点实在的东西呀?" 要是我,可能也早就忍不住了。 好,好。我其实并没有忘记前面说的那个logging的例子。卖了这么长时间的关子,除了有想形而上的虚荣心外,也是想给大家多一点时间来嚼一下这个例子,让熟悉OO的朋友肚子里面多少有个腹稿。 下面,我来继续上回书说到的这个logging。 前面列举了那么一大堆乱七八糟的需求,不知道是不是有人和我一样看着这些繁杂的条目闹心。我在做的时候其实只想了五六条需求,就已经开始烦了。何况还有一些暂时不知道如何抉择的几个疑问点。最初Kiss出来的那个logger实现明显不能用了。refac ...
失乐园发了之后。有的朋友对“OO是一种自顶向下的方法论”的论述有些疑问。 这里补充一下。 如果认可OO是一个责任分配体系,那么自顶向下就是一个自然的逻辑结论。 没有分析出来“需求”,也就无所谓“责任”,于是 ...
发现老庄的连载方法很好.又能吸引眼球又能好整以暇.于是从善如流. 这几天在完善我的neptune系统和jaskell语言。顺手发现了一个logging的需求。如获至宝阿。 为什么呢?不是因为这个需求多么难,或者我的解决方法多么巧妙, ...
Global site tag (gtag.js) - Google Analytics