re: 一道java算法题 ラノ 2008-07-08 16:30
高手!
re: 消除实现继承和面向接口编程 nabie 2008-01-26 22:40
继承还是应该以 IS-A 为原则。楼主的例子要实现一个 Stack 却用 ArrayList 作为基类就明显是一个滥用 OO 特性的例子,因为 Stack 并非是一种 ArrayList。正因为如此,才会有“可能其中的某些方法能改变Stack的状态,而Stack对这些改变并不知情”的情况。并非使用了继承就是 OO,程序语音中的继承只是为了支持 OO 的继承概念而提供的。但如果你在使用语音的继承特性时并不按照 OO 的概念来使用,则即使你整个程序都布满了各种 OO 特有的东西,你的程序也不是一个 OO 的程序。类的体系应该是合乎分类的逻辑的。如计算机包括个人电脑、服务器和大型机等,所以个人电脑、服务器和大型机等是个人电脑的子类,而个人电脑有分为台式机和笔记本,所以台式机和笔记本是个人电脑的子类,但他们并非是大型机,所以不是大型机的子类。你不能因为现在已经有大型机这个类,而台式机、笔记本和大型机一样都能计算,所以把它们作为大型机的子类,这样一些对大型机的操作当然不能运用在台式机和笔记本上。而你可以使他们并列,而提取出计算功能形成一个叫计算机的父类里,然后台式机、笔记本和大型机都是计算机的子类。
xml_apis.lib包是否出现版本重复也会出现
写的不错,就是如何生成next写的不清楚啊,来看文章的一般都是对next生成的原理觉得有疑问的。
re: 哈夫曼树及哈夫曼编码 sd9218@hotmail.com 2007-10-16 17:18
请问一下
如何把哈夫曼树在汇编中实现...
实现PC和FPGA开发板的字符哈夫曼编码解码
Ah.... Sorry;;; NO must be;;; YES shoud be
really sorry;;;;
I think that you must be deleted servlet.jar in "C:\Program Files\Java\jdk1.6.0_01\jre\lib\ext"
re: 数据结构与算法学习之字符串模式匹配KMP算法 halftomato 2007-10-02 17:56
如果我不在边城,那我一定是在前往边城的路上。
很喜欢这句话。与君共勉。
re: 数据结构与算法学习之字符串模式匹配KMP算法 halftomato 2007-10-02 17:55
如果我不在变成,那我一定是在前往边城的路上。
很喜欢这句话。与君共勉。
我lib下面没有你说的catalina等三个jar,还是不行,可能还会有什么其他jar?
re: 消除实现继承和面向接口编程 InPractice 2007-09-08 10:56
我就很反感一个接口一个实现的方式。当然这是以我的项目经验为前提的(不排除目光偏狭的可能性)。
这种预留的扩展余地,即将来可以加入其他的实现。在我的项目中事实上成为了“过度工程”的例子。因为到现在为止还是一个接口一个实现。倒是每次读代码是多了一个间接级别,麻烦了很多,效率降低。有人可能争辩说,代码读起来麻烦点没有关系,设计上还是优美的。我不同意这种观点,现实中的代码读的次数远远超过写的次数,读代码效率降低的影响不是一个所谓的优美的(在我看是华而不实)设计可以弥补的。
在我看来,一个接口一个实现, 恰恰是当前流行的反模式。尽管可能在某些情况下有其合理性,但多数是对“面向接口编程”的滥用。
re: 消除实现继承和面向接口编程 kafka0102 2007-09-03 22:17
@Matthew Chen
是的,对于繁杂的对象模型,如果继承层次太多就会很难把握具体的调用,也更难于修改。对于我举的例子,也许并不漂亮,这里只是为了说明一下问题。实际上,我看到很多代码有在基类抛出异常或子类抛出异常的情况,因为作者希望抽象出的公共操作只是对其某个或某几个子类不适用,而作者因为实际需求又希望将方法作为公共方法。
re: 消除实现继承和面向接口编程 Matthew Chen 2007-09-03 21:35
个人也觉得oo中会出现一些问题,这些问题随着技术和思想的进步日渐凸现.
但就本文的观点,其实谈不上是oo的封装和继承带来的,很多往往是我们设计人员的疏忽.
比如第一个stack的例子,ArrayList是明显的jfc,继承自它是完全没有必要的,除非你的类在抽象空间中能够真正代表ArrayList类的一个特殊子类集合,面向对象优先考虑抽象空间的完美而不是效率和实现空间的简便,这是规则,也是出于ood的要求,在这个实例中,明显应该用聚合而不是继承.
抛出异常的问题,对不支持的方法抛出异常过于拙劣了,完全可以在继承树的层次上加上抽象类,很好地分叉,而不是依赖有限的异常处理机制,异常处理在面向对象构架中算得上相当游离的一个功能了,尽管看似也有类的继承关系,但独立的捕获和处理,并不适合作为业务逻辑的相关环节实现.
oo的问题个人觉得很多在继承层次的复杂性,jfc库继承层次过多,导致无法查知当前方法的具体调用栈位置——也就是具体方法的实现方式往往被复杂和繁冗的继承和封装掩盖,让人摸不找头脑,不知道过程逻辑究竟在何处实现,也就无法最大限度地学习已有的类库(当然,只是学习和修改,因为使用是不需要知道了,毕竟封装就是为了屏蔽实现细节。)
re: 消除实现继承和面向接口编程 dennis 2007-09-03 11:19
传统的OO教育中一直很强调继承、多态,其实OO中最重要的是封装的概念,封装不仅仅是数据的封装(最初级的封装),如果将封装推广,抽象类或者说基类是对派生类的封装(或者说隐藏),组合也是一种封装,Adapter、state、Facade等模式更是封装,在多线程编程中,封装更是异常重要。
re: Spring2.X中AOP的使用 光荣之翼 2007-08-30 18:15
收藏
re: Spring 1.x中AOP的使用 JAVA面试题 2007-08-30 12:41
厉害学习
re: Spring2.X中AOP的使用 JAVA面试题 2007-08-30 12:40
学习了
re: 在spring中使用Timer kafka0102 2007-07-20 08:55
不好意思,记错了,以为Spring也是opnesymphony 的东东了。。我对Quartz也不是很了解,它在做复杂的任务调度方面要更好些,因为它可以在配置文件中配置调度策略,而Timer则只能写在TimerTask中。
re: 在spring中使用Timer 小雪飞刀 2007-07-19 17:25
不知楼主是否做过测试,Quartz和JDK TimerTask哪种方式控制起来更快捷、方便?一直再用Quartz,对JDK TimerTask了解不多,望楼主赐教!
re: 在spring中使用Timer Winefox 2007-07-19 14:27
楼主莫要误人子弟
补充楼上:
Quartz是WebWork的同门师弟……
老大,Quartz可不是Spring的“同门师弟“,别误会啊!
re: 使用DbUnit进行持久化测试(1) iamzzb 2007-07-09 16:10
@kafka0102
在word中,选择'插入'-'工具'-'对象'-'由文件创建'-'浏览'找到要出入的文件-'
显示为图标'-'确定'应该是你要的效果吧
re: [翻译]过滤器集合 soft4any 2007-07-01 19:56
不错。实际上这个类的设计思想在File中已经存在了,遍历子File的时候,jdk提供了FileFilter类
re: 使用DbUnit进行持久化测试(1) kafka0102 2007-06-14 09:19
有谁知道如何在文章中附上文件?
re: 介绍一web服务器--Jetty somebody(莫多泡泡) 2007-06-13 22:52
偶也用ubuntu,我用maven里面的jetty-plugin,
用ubuntu还用破解软件。我用WTP,感觉WTP就够用了。
re: 浅说Get请求和Post请求 BeanSoft 2007-05-23 18:18
可以参考:
http://www.blogjava.net/beansoft/archive/2007/05/23/119444.html
AJAX入门介绍 - (2) GET 和 POST 配合表单
encodeURIComponent() 不会出现乱码, 别的可能会丢字母.
re: 浅说Get请求和Post请求 ronghai 2007-05-23 15:23
很好的文章,学习了
re: 上溯造型和下溯造型 热门单曲 2007-05-22 23:52
多谢楼主分享 顶了
re: 浅说Get请求和Post请求 热门单曲 2007-05-22 23:30
楼主 学习了 多谢
re: 上溯造型和下溯造型 自己的小屋 2007-05-22 09:07
这里是upcasting和downcasting...它应该是继承的一些特征。设计模式中就疯狂得用到这些东西。比如说还有:多态等。
re: 要范型,要DAO,更要范型DAO kafka0102 2007-05-03 22:06
发表文章时,代码不是直接贴进去的,而是选择编辑器中的“代码”选项(应该在编辑菜单的最后一个位置),然后根据弹出来的对话框进行操作就行了。
楼主,你博客上的的代码折叠功能是用什么工具生成的?我问了好几个人都不知道,我也想要这个功能
re: 推荐一个代码生成工具Commonclipse sharajava 2007-04-23 08:29
如果就这么点功能,看起来用处不大呀。Commonclipse名字挺响亮
re: 要范型,要DAO,更要范型DAO 开源英汉机器翻译 2007-04-18 08:40
开源英汉机器翻译C#.NET项目 www.liebiao.net
我们邀请你 技术交流
re: 要范型,要DAO,更要范型DAO CrossAge 2007-04-17 10:32
这样子做,还有必要搞DAO这一层么?
目的就是为了节省CRUD的代码量?
re: 要范型,要DAO,更要范型DAO kafka0102 2007-04-17 09:20
都要疯掉了。昨晚第一遍写的时候,直接在编辑器里做,结果添加代码框出不来,IE死掉了。第二遍在word里写,结果发表时不能连接服务器。好吧,一大早来做,结果从word到编辑器转换时,格式都乱了。就这样了,没心情再改了。
re: 要范型,要DAO,更要范型DAO[未登录] Matthew 2007-04-17 09:07
朋友,把排版重搞一下吧!
re: JavaScript中定义对象的四种方式 kafka0102 2007-04-09 19:11
学艺不精,还需努力!
楼主的 this.introduceSelf = introduceSelf(); 是不是写错了?
这样的用意, 并不是把introduceSelf()的句柄传给 内部变量this.introduceSelf, 而是首先执行了introduceSelf()这个方法, 由于只是一个alert, 故此方法会返回一个underfined, 然后赋值给this.introduceSelf.
re: JavaScript中定义对象的四种方式 kafka0102 2007-04-08 20:28
确实不对,我试了一下,name属性根本没有起作用,看来外部方法introduceSelf()需要添加参数name才行!
this.introduceSelf = introduceSelf();
写错了吧
re: 一道java算法题 Belle 2007-03-18 20:11
如果就这么几个数字,几种算法间并无太大差异。
但是,如果有100个数字或更多那就惨了, 递归就用不上了 ,会STACK溢出的。
所以可以 试试一种叫动态算法——也可以说是一种反递归,TOPCODE上经常用的一种。
re: 一道java算法题 key 2007-03-14 11:02
@key
看错了…… 能跑到