语言与模式-08适配器模式

35 篇文章 1 订阅
24 篇文章 0 订阅

意图

将一个类的接口转换成另外一个客户希望的接口。Adapter 模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。

适用性

  • 你想使用一个已经存在的类,而它的接口不符合你的需求。
  • 你想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类(即那些接口可能不一定兼容的类)协同工作。
  • (仅适用于对象Adapter)你想使用一些已经存在的子类,但是不可能对每一个都进行子类化以匹配它们的接口。对象适配器可以适配它的父类接口。

Java实现

假设目前做一个新系统,有如下代码结构。

public interface Car{
     public void drive();
}

public class Benz implements Car{
     public void drive(){
          System.out.println("Benz run");
     }
}

public class Cruze implements Car{
     public void drive(){
          System.out.println("Cruze run");
     }
}

有一个老系统,里面有如下代码

public class Smart{
     public void run(){
         System.out.println("Smart run");
     }
}

类适配器:

public class SmartCar extends Smart implements Car{
      public void drive(){
           this.run();
      }
}

对象适配器:

public class SmartCar implements Car{
     private Smart smart = new Smart();

     public void drive(){
          smart.run();
     }
}

Clojure实现

first-class function轻松解决!

(defn drive []
  (println "drive"))

(defn run []
  (println "run"))

(defn do-drive [f]
  (f))

(do-drive drive)
(do-drive run)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值