From c41be7dfc843b4088e0a54de3ed11f54d6bede50 Mon Sep 17 00:00:00 2001 From: CyC2018 <1029579233@qq.com> Date: Tue, 5 Jun 2018 20:15:23 +0800 Subject: [PATCH] auto commit --- notes/设计模式.md | 142 ++++++++++++++++++ pics/c2cbf5d2-82af-4c78-bd43-495da5adf55f.png | Bin 0 -> 14336 bytes 2 files changed, 142 insertions(+) create mode 100644 pics/c2cbf5d2-82af-4c78-bd43-495da5adf55f.png 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 0000000000000000000000000000000000000000..70ecc3ec675c657b114255679256b6ec202413da GIT binary patch literal 14336 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 literal 0 HcmV?d00001