如果你要建立一个Swing的目录树,那么你不能直接用File因为File的toString是全部路径的,而你只是希望toString返回一个当前路径。那么最简单就是建立一个Node类:
Node>>
file: File
toString: ^file.name
但这只是组合,不是抽象,问题就在于你要同时去折腾Node和File两个概念,尤其在递归的结构里面,更加麻烦,而真正的抽象就是建立一个DirectoryNode抽象
DirectoryNode>>
subDirs
roots
...
这样DirectoryNode的使用者就完全不需要理会File这个类了,或者说DirectoryNode遮蔽了File,这才是抽象,因为我们用一个东西遮蔽着另一个东西,系统至少不需要对付两个概念。提供了更好的模块化,因为文件相关的东西全部被封装到DirectoryNode里面。
一般人做抽象常犯的错误就是错把confusion当成abstraction,抽象一定是要砍掉东西的,不是往上加东西的。
【作者: RonaldMatt】【访问统计:】【2007年06月15日 星期五 10:33】【注册】【打印】
你可以使用这个链接引用该篇文章 http://publishblog.blogchina.com/blog/tb.b?diaryID=6326463