锁定老帖子 主题:基础知识: 需求!
该帖已经被评为精华帖
|
|
---|---|
作者 | 正文 |
发表时间:2004-08-22
firebody 写道 ajoo 写道 potian 写道 ajoo,要依赖也应该是依赖接口,而不是依赖具体的实现,除非是在一个纯粹的工厂里面。
请告诉我你的代码里没有一个new。 new是依赖实现的。 很累了◎ 不过还想说一下,具体的new自然是由工厂来new出来,这个new是直接new那个有公共构造函数的new,这个工厂是全局配置的工厂类, 不是你说的静态工厂方法! client端只跟这个工厂以及接口耦合 累了就休息吧。 我也累的。而且比你们累得多。 另外, 如果你还是忍不住拿出容器配置来说话, 请不要假设静态工厂就不能用容器。 那样不公平。 |
|
返回顶楼 | |
发表时间:2004-08-22
引用 鉴于你前面明显的看不明白问题就发言的前科, 还是友好建议你先象我一样一点一点问清楚了别人的真正意是什么再开始阐发。 对此我深表道歉!!对不起! 不过,我还是觉得你在不断引入问题的复杂性! 就像你开了一个水坝的小口,随着问题规模的深入,就像洪水决堤一样,无数的问题接踵而来,直至到最后,你猜发现,自己的设计失败的最根本原因就是违反了OOP的最基本的OCP原则!信不信! 看看你的每一个instance方法实现,如果对象关联复杂一点,层次多一点,你在看看你的instance,绝对evil! |
|
返回顶楼 | |
发表时间:2004-08-22
firebody,
其实另一个避免误解别人的意思的方法就是, 你来把我的意思按照你的理解阐述一下,然后问问我是不是那个意思。 因为一旦你开始评价一项东西, 别人就会认为你已经弄懂了你批评的东西。如果然后又发现其实是误会, 其实很浪费双方的时间的。 我很欢迎你先来把你要批评的东西阐述一下。然后弄清楚没有误会后再来做绝对什么的判断。这样是不是会安全一点? |
|
返回顶楼 | |
发表时间:2004-08-22
firebody,这个问题我也是按着不动,虽然实际中必然出现
firebody,ajoo,你们还记得我在高级论坛那边讨论交流方式的帖子吗 不过我觉得这个话题讨论下去也不太合适了,就这样算了吧 |
|
返回顶楼 | |
发表时间:2004-08-22
ajoo 写道 firebody,
其实另一个避免误解别人的意思的方法就是, 你来把我的意思按照你的理解阐述一下,然后问问我是不是那个意思。 我很欢迎你先来把你要批评的东西阐述一下。然后弄清楚没有误会后再来做绝对什么的判断。这样是不是会安全一点? 可以叫你大哥吗?我怕了你了! 不敢跟你争论了,会累死我的!88,今天我的活都没干成!55555555 |
|
返回顶楼 | |
发表时间:2004-08-22
potian 写道 firebody,这个问题我也是按着不动,虽然实际中必然出现
firebody,ajoo,你们还记得我在高级论坛那边讨论交流方式的帖子吗 不过我觉得这个话题讨论下去也不太合适了,就这样算了吧 看来问题刚刚有点眉目, 就又进行不下去了。我觉得大家讨论态度有所偏差, 提醒一下, 各人自己纠正一下,仍然不伤大雅的。 我倒是觉得我们理清楚了很多误解。 现在万事具备,就差你来举一个实例证明静态厂的灵活性不够了。 在这个临门一脚的关键时刻放弃你不觉得可惜? 还是你暂时没有时间,举不出例子来呢? |
|
返回顶楼 | |
发表时间:2004-08-22
firebody 写道 ajoo 写道 firebody,
其实另一个避免误解别人的意思的方法就是, 你来把我的意思按照你的理解阐述一下,然后问问我是不是那个意思。 我很欢迎你先来把你要批评的东西阐述一下。然后弄清楚没有误会后再来做绝对什么的判断。这样是不是会安全一点? 可以叫你大哥吗?我怕了你了! 不敢跟你争论了,会累死我的!88,今天我的活都没干成!55555555 不知道我今天又说了什么出格的话了? 如果有, 请指出来, 我一定道歉。 或者我又是胡搅蛮缠了?我前面都已经尽量试图理解各位的意思了, 也尽量从各位的思考角度出招, 还有哪里做得不好的,也麻烦指出一下?我一定尽量改进。 |
|
返回顶楼 | |
发表时间:2004-08-22
ajoo,这样吧,你看到我前面写的代码没有,如果我的表述还是没有让你明白我想表达的意思,估计真的进行不下去了
在第6页的最下面 |
|
返回顶楼 | |
发表时间:2004-08-22
potian 写道 引用 比如你如果跟我说, TruePredicate的静态工厂不能直接调用LiteralPredicate, 我只能说你太极端了。 无话可说。 而且, 继承也是两个类直接紧紧耦合的,你用不用继承呢? firebody ,我也认为ajoo这话有问题,我的理解是 不是说TruePredicate的静态工厂不能直接调用LiteralPredicate,是最好不要调用 继承是子类对父类的依赖 好, 就算是继承仅仅是子类对父类的依赖。我不想就继承这个问题深入下去。 那么这不是依赖? 你是否要说TruePredicate调用LiteralPredicate不如继承它好? 后者的依赖, 耦合更小? |
|
返回顶楼 | |
发表时间:2004-08-22
potian 写道 这样吧,我来实现一下:
final class TruePredicate{ public static Predicate instance(int code);{ if(code==1); return new Predicate();{ public bool eval(Object obj);{return true;} }; else if(code==2); return LiteralPredicate.instance(true);; else return new TruePredicate(); } 这样readonly的代码可以用TruePredicate.instance(1),potian可以用TruePredicate.instance(2),charon可以用TruePredicate.instance(XXX),现在这份代码就可以不经修改在各个应用程序之间使用了,同时也可以让大家不知道具体的子类,反正是Predicate 接口就行了 确实人一多, 不小心就漏掉了你的帖子。 呵呵。道歉。 好吧, 我虽然认为你这个代码写的不太好看, 不过从外界调用接口来说, 没什么问题。只要它实现的功能符合你的要求的语义就好。 至于是否“可以不经修改在各个应用程序之间使用”, 我没有说过。 你这个前提太大。我的论述很清楚: 它适用在内部实现细节变化但是对外界的语义不变的情况。 别的情况,它管不着。你得根据具体情况找最合适的解决方案。 |
|
返回顶楼 | |