摘要:
要判定一个代码是不是包含了“不合适的依靠”,共有四个方法:1.看代码:有没有互相依靠?2.认真想想:它真正需要的是什么?3.推测一下:它在以后的系统中可以重用吗?4.到要重用的时候就知道了:现在我要重用这个类,能不能重用?
假如现在有一个类Parent,里面有个属性的类型是Child,add的方法里面还有个参数的类型是Girl:
class Parent{
Child child;
void add(Girl girl){
...
}
}
因为上面Parent里面用到了Child跟Girl这两个类,我们就说,Parent引用了类Child跟类Girl。现在的问题是,假如Child这个类或者Girl这个类编译不过的话,那么Parent这个类也编译不了了。也就是说,Parent依靠于Child跟Girl。这章讲述的,就是因为一些类的依靠造成的无法重用的问题。
示例
这是一个处理Zip的程序。用户可以在主窗口中先输入要生成的目标zip的路径,比如c:/f.zip ,然后输入他想压缩到这个zip的源文件的路径,比如
c:/f2.doc和c:/f2.doc 。然后这个程序就会开始压缩f1.doc和f2.doc,生成f.zip文件。在压缩各个源文件的时候,主窗口下的状态栏都要显示相关的信息。比如,在压缩c:/f2.doc的时候,状态栏就显示"正在压缩 c:/f2.zip"。
目前的代码就是
class ZipMainFrame extends Frame {
StatusBar sb;
void makeZip() {
String zipFilePath;
String srcFilePaths[];
//根据UI上给zipFilePath和srcFilePaths赋值
...
ZipEngine ze = new ZipEngine();
ze.makeZip(zipFilePath, srcFilePaths, this);
}
void setStatusBarText(String statusText) {
sb.setText(statusText);
}
}
class ZipEngine {
void makeZip(String zipFilePath, String srcFilePaths[], ZipMainFrame f) {
//在该路径上创建zip文件
...
for (int i = 0; i < srcFilePaths.length; i++) {
//将srcFilePaths[i]的文件加到压缩包中
...
f.setStatusBarText("Zipping "+srcFilePaths[i]);
}
}
}
新闻热点
疑难解答