耦合的概念
耦合是一个宽泛的概念。两个程序模块有关联就叫做耦合
比如某些模块必然要关联起来才能工作,这是由业务逻辑决定的,不能否认。所以解耦并不是字面意义上的把关联拆掉,而是把模块之间的关联放松到必要的程度。
- 模块只对外暴露最小限度的接口,形成最低的依赖关系。
- 只要对外接口不便,板块内部的修改,就是不得影响期的的模块。
- 删除一个模块,应当值影响有依赖关系的其他模块,而不应该影响其他无关部分
public static void main(String[] args) {
// Mouse mouse = new Mmouse();
// Mouse mouse = new Omouse();
// Display display = new LED();
Mouse mouse = new TouchScreen();
Display display = (Display) mouse;
Computer c = new Computer(mouse, display);
c.startup();
}
}
interface Mouse {
void input();
}
interface Display {
void output();
}
class Mmouse implements Mouse {
public void input() {
System.out.println("mmouse input");
}
}
class Omouse implements Mouse {
public void input() {
System.out.println("omouse input");
}
}
class CRT implements Display {
public void output() {
System.out.println("CRT output");
}
}
class LED implements Display {
public void output() {
System.out.println("LED output");
}
}
class TouchScreen implements Mouse, Display {
public void input() {
System.out.println("touchscreen input");
}
public void output() {
System.out.println("touchscreen output");
}
}
class Computer {
private Mouse mouse;
private Display display;
public Computer(Mouse mouse, Display display) {
this.mouse = mouse;
this.display = display;
}
public void startup() {
this.mouse.input();
this.display.output();
}