在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,那么如何应对这种“多维度的变化”?这就要使用桥接模式。而具体使用的方式,则是将抽象部分与他们的实现部分分离,使得它们都可以独立的变化。
public interface NotebookSoft {
void run();
}
public class NotebookSoftA implements NotebookSoft {
@Override
public void run() {
System.out.println("运行 A 软件!");
}
}
public class NotebookSoftB implements NotebookSoft {
@Override
public void run() {
System.out.println("运行 B 软件!");
}
}
public abstract class Notebook {
private NotebookSoft notebookSoft;
public void setNotebookSoft(NotebookSoft notebookSoft) {
this.notebookSoft = notebookSoft;
}
public NotebookSoft getNotebookSoft() {
return notebookSoft;
}
public abstract void run();
}
public class NotebookA extends Notebook {
@Override
public void run() {
System.out.println("A 笔记本开始运行!");
super.getNotebookSoft().run();
}
}
public class NotebookB extends Notebook {
@Override
public void run() {
System.out.println("B 笔记本开始运行!");
super.getNotebookSoft().run();
}
}
public class Client {
public static void main(String[] args) {
Notebook notebook = new NotebookA();
notebook.setNotebookSoft(new NotebookSoftA());
notebook.run();
notebook.setNotebookSoft(new NotebookSoftB());
notebook.run();
notebook = new NotebookB();
notebook.setNotebookSoft(new NotebookSoftA());
notebook.run();
notebook.setNotebookSoft(new NotebookSoftB());
notebook.run();
}
}
A 笔记本开始运行!
运行 A 软件!
A 笔记本开始运行!
运行 B 软件!
B 笔记本开始运行!
运行 A 软件!
B 笔记本开始运行!
运行 B 软件!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) | 黑马程序员IT技术论坛 X3.2 |