diff --git a/notes/设计模式.md b/notes/设计模式.md
index 6c5e2769..278d6c9a 100644
--- a/notes/设计模式.md
+++ b/notes/设计模式.md
@@ -2349,6 +2349,148 @@ public class Client {
将抽象与实现分离开来,使它们可以独立变化。
+### 类图
+
+- Abstraction:定义抽象类的接口
+- Implementor:定义实现类接口
+
+
+
+### 实现
+
+RemoteControl 表示遥控器,指代 Abstraction。
+
+TV 表示电视,指代 Implementor。
+
+桥接模式将遥控器和电视分离开来,从而可以独立改变遥控器或者电视的实现。
+
+```java
+public abstract class TV {
+ public abstract void on();
+
+ public abstract void off();
+
+ public abstract void tuneChannel();
+}
+```
+
+```java
+public class Sony extends TV{
+ @Override
+ public void on() {
+ System.out.println("Sony.on()");
+ }
+
+ @Override
+ public void off() {
+ System.out.println("Sony.off()");
+ }
+
+ @Override
+ public void tuneChannel() {
+ System.out.println("Sony.tuneChannel()");
+ }
+}
+```
+
+```java
+public class RCA extends TV{
+ @Override
+ public void on() {
+ System.out.println("RCA.on()");
+ }
+
+ @Override
+ public void off() {
+ System.out.println("RCA.off()");
+ }
+
+ @Override
+ public void tuneChannel() {
+ System.out.println("RCA.tuneChannel()");
+ }
+}
+```
+
+```java
+public abstract class RemoteControl {
+ protected TV tv;
+
+ public RemoteControl(TV tv) {
+ this.tv = tv;
+ }
+
+ public abstract void on();
+
+ public abstract void off();
+
+ public abstract void tuneChannel();
+}
+```
+
+```java
+public class ConcreteRemoteControl1 extends RemoteControl {
+ public ConcreteRemoteControl1(TV tv) {
+ super(tv);
+ }
+
+ @Override
+ public void on() {
+ System.out.println("ConcreteRemoteControl1.on()");
+ tv.on();
+ }
+
+ @Override
+ public void off() {
+ System.out.println("ConcreteRemoteControl1.off()");
+ tv.off();
+ }
+
+ @Override
+ public void tuneChannel() {
+ System.out.println("ConcreteRemoteControl1.tuneChannel()");
+ tv.tuneChannel();
+ }
+}
+```
+
+```java
+public class ConcreteRemoteControl2 extends RemoteControl {
+ public ConcreteRemoteControl2(TV tv) {
+ super(tv);
+ }
+
+ @Override
+ public void on() {
+ System.out.println("ConcreteRemoteControl2.on()");
+ tv.on();
+ }
+
+ @Override
+ public void off() {
+ System.out.println("ConcreteRemoteControl2.off()");
+ tv.off();
+ }
+
+ @Override
+ public void tuneChannel() {
+ System.out.println("ConcreteRemoteControl2.tuneChannel()");
+ tv.tuneChannel();
+ }
+}
+```
+
+```java
+public class Client {
+ public static void main(String[] args) {
+ RemoteControl remoteControl1 = new ConcreteRemoteControl1(new RCA());
+ remoteControl1.on();
+ remoteControl1.off();
+ remoteControl1.tuneChannel();
+ }
+}
+```
+
### JDK
- AWT (It provides an abstraction layer which maps onto the native OS the windowing support.)
diff --git a/pics/c2cbf5d2-82af-4c78-bd43-495da5adf55f.png b/pics/c2cbf5d2-82af-4c78-bd43-495da5adf55f.png
new file mode 100644
index 00000000..70ecc3ec
Binary files /dev/null and b/pics/c2cbf5d2-82af-4c78-bd43-495da5adf55f.png differ