Adapter(ちょうぜつ本)
Adapterは、同じ機能性を維持しつつ、インターフェースを変換する (Kindle版 p.384)
(ProxyやDecoratorとは)両端の様子が違う(挿絵にも示されている)
DrawingInterface(Decorator(ちょうぜつ本)と共通)
startAt
lineTo
サードパーティライブラリ側のVendorGraphicsInterface
2つのインターフェースが合わない
-> Adapterを使って変換する
結城浩にインタビュー Java言語で学ぶデザインパターン入門の直流と交流の例
VendorGraphicsDrawingAdapter
DrawingInterfaceを実装する
VendorGraphicsInterfaceに委譲する
アダプターはクリーンアーキテクチャのインフラストラクチャ層にあたる
アダプターはアプリケーションアーキテクチャにもサードパーティライブラリにも依存します。(Kindle版 p.387)
サードパーティライブラリは最も具象
👉 第1章 クリーンアーキテクチャ
アダプターはテスト困難なので小さくする
変換だけをする
アプリケーションの知識は入ってこない(円のもっと内側で表されるべき)
サードパーティのライブラリの使い方が本当に合っているかは、単体テストではわかりません。(Kindle版 p.388)
IMO:コードに恥をかかせる話!(『Clean Craftsmanship』第4章)
TODO https://nikkie-ftnext.hatenablog.com/entry/pycon-apac-2023-practice-test-talk-extra-test-topics-commentary にあるのをまとめたい
比較的外側の層でなら、安定度が高いフレームワークのライブラリは、より低いレイヤーのベンダー固有技術とのアダプターとして、便利に使えます。(Kindle版 p.389)
ORMの例
マンガでわかる Adapter
機能は合ってるのに端子がかみ合わないものを形合わせしたいという「意図」に名前が付いているのであって、ぜんぶ新規でコードを書くなら Adapter パターン構造には意味がないよってことです。仕方なくやる手段なんだから、それを目的にしちゃダメですよ。