适配器模式

定义

适配器模式将一个类的接口, 转换成客户期望的另一个接口. 适配器让原本不兼容的类可以合作无间.

案例

背景: 有鸭子接口,火鸡接口,先将火鸡类型适配成鸭子类型
image.png

TurkeyAdapter适配器实现需要的类型(Duck),并持有适配的类型(Turkey)

  1. public class TurkeyAdapter implements Duck {
  2. Turkey turkey;
  3. public TurkeyAdapter(Turkey turkey) {
  4. this.turkey = turkey;
  5. }
  6. @Override
  7. public void quack() {
  8. turkey.gobble();
  9. }
  10. @Override
  11. public void fly() {
  12. turkey.fly();
  13. }
  14. }

测试

  1. @Test
  2. public void testAdapter() {
  3. TurkeyAdapter adapter = new TurkeyAdapter(new WildTurkey());
  4. adapter.quack();
  5. adapter.fly();
  6. }
  7. 结果:
  8. 咯咯叫
  9. 火鸡飞

外观模式

定义

外观模式提供了一个统一的接口, 用来访问子系统中的一群接口, 外观定义了一个高层接口, 让子系统更容易使用
**

  • 外观不仅简化了接口, 也将客户从组件的子系统中解耦
  • 外观和适配器可以包装许多类, 但是外观的意图是简化接口, 而适配器的意图是将接口转换成不同的接口

设计原则:

  • 最少知道原则: 之和你的密友谈话

image.png
image.png

案例

image.png