auto commit

This commit is contained in:
CyC2018 2018-03-03 11:35:37 +08:00
parent a8970e7093
commit d238839fea

View File

@ -830,8 +830,11 @@ public class Singleton {
**3. 解决方案类图**
- RemoteControl 是遥控器,它可以为每个按钮设置命令对象,并且调用命令对象的 execute() 方法。
- Command 就是命令对象,命令模式正式将各种命令封装成 Commad 对象来实现的。
- Light 是命令真正的执行者。可以注意到 LightOnCommand 和 LightOffCommand 类组合了一个 Light 对象,通过组合的方法,就可以将 excute() 方法委托给 Light 对象来执行。
- RemoteLoader 是客户端,注意它与 RemoteControl 的区别。因为 RemoteControl 不能主动地调用自身的方法,因此也就不能当成是客户端。客户端好比人,只有人才能去真正去使用遥控器。
![](https://github.com/CyC2018/InterviewNotes/blob/master/pics//5ef94f62-98ce-464d-a646-842d9c72c8b8.jpg)
@ -931,7 +934,7 @@ Light is on!
**2. 模式类图**
有两种适配器模式的实现一种是对象方式一种是类方式。对象方式是通过组合的方法让适配器类Adapter拥有一个待适配的对象Adaptee从而把相应的处理委托给待适配的对象。类方式用到多重继承Adapter 可以看成 Target 和 Adaptee 类型,先把它当成 Adaptee 类型然后实例化一个 Adapter 对象,再把它当成 Target 类型的,这样 Client 就可以把这个对象当成 Target 的对象来处理。
有两种适配器模式的实现一种是对象方式一种是类方式。对象方式是通过组合的方法让适配器类Adapter拥有一个待适配的对象Adaptee从而把相应的处理委托给待适配的对象。类方式用到多重继承Adapter 继承 Target 和 Adaptee先把 Adapter 当成 Adaptee 类型然后实例化一个对象,再把它当成 Target 类型的,这样 Client 就可以把这个对象当成 Target 的对象来处理,同时拥有 Adaptee 的方法
![](https://github.com/CyC2018/InterviewNotes/blob/master/pics//253bd869-ea48-4092-9aed-6906ccb2f3b0.jpg)
@ -939,7 +942,9 @@ Light is on!
**3. 问题描述**
让鸭子Duck适配火鸡TurkeyDuck 有 quack() 方法,而 Turkey 只有 gobble() 方法。也就是要让 Turkey 也有 Duck 的 quack() 方法。
鸭子Duck和火鸡Turkey拥有不同的叫声Duck 调用的是 quack() 方法,而 Turkey 调用 gobble() 方法。
要求将 Turkey 的 gobble() 方法适配成 Duck 的 quack() 方法。
**4. 解决方案类图**
@ -950,28 +955,24 @@ Light is on!
```java
public interface Duck {
public void quack();
public void fly();
}
```
```java
public interface Turkey {
public void gobble();
public void fly();
}
```
```java
public class WildTurkey implements Turkey{
@Override
public void gobble() {
System.out.println("gobble!");
}
@Override
public void fly() {
System.out.println("fly!");
}
}
```
```java
public class TurkeyAdapter implements Duck{
Turkey turkey;
@ -984,28 +985,23 @@ public class TurkeyAdapter implements Duck{
public void quack() {
turkey.gobble();
}
@Override
public void fly() {
turkey.fly();
}
}
```
```java
public class DuckTestDrive {
public static void main(String[] args) {
Turkey turkey = new WildTurkey();
Duck duck = new TurkeyAdapter(turkey);
duck.quack();
duck.fly();
}
}
```
运行结果
```html
gobble!
fly!
```
## 2. 外观模式