Upload
doaki
View
919
Download
0
Embed Size (px)
DESCRIPTION
第1回 チキチキ『( ゜ェ゜)・;'.、ゴフッ』Adapter パタン
Citation preview
Adapter
識別: do_aki ( どぅーあき ) 分布: Tokyo / Japan 生態:インフラ兼 Web アプリケーション エンジ
ニア サーバラッキング・ケーブリング ネットワーク / ミドルウェア構築 WAF / Library Web アプリ (PHP/Ruby) - 会社が提供するサービス GUI アプリ (C#/C++) – 社内業務アプリ etc...
あんた誰 ?
継承も、インターフェースも、あるんだよ 内部クラスなんてあるわけない こんなの絶対おかしいよ
悪名高き PHP 使い
・プロジェクトの 8,9 割は ほぼ間違いなく膨大なゴミ山・手続き型と残念なオブジェクト指向が混在
Why PHP Was a Ghetto http://codefury.net/2011/04/why-php-was-a-ghetto/
インタフェースの異なるクラスを組み合わせる 構造パタンの一種 別名 Wrapper
利用したい機能を備えたクラス Adaptee を変えずに 利用したい振る舞いを持つクラス Target と組合わせ
る そのための口利きをするクラス Adapter ( Adapter を利用する側 Client )
Adapter パタン
電源アダプタ
Client:電気が必要
Adaptee:電気を供給する機能( ただし AC 電流 )
DC 電流を供給する機能
Target: DC 電流
むしろ分かりづらかったかも知れない orz
class Adapter implements Target { Adaptee delegateObject; }
継承による Adapter
委譲による Adapter
実装方法
class Adapter extends Adaptee implements Target {}
class Adapter extends Target { Adaptee delegateObject; }
プリミティブをオブジェクトとして扱いたいとき プリミティブラッパークラス in Java
BL ライブラリで他のライブラリの機能を使いたいとき 継承構造を維持したいので、委譲を使うケースが多
い 既存の機能が使いづらいとき
C 向けのライブラリをラップする
どういうときに使う ?
変換コスト かかりすぎるなら別方法を考えた方がよい というかラッパーじゃないよねそれ
Adaptee がブラックボックスになる というか、ブラックボックスにするべき 気づいたらブラックボックスじゃなくなってたり…
…
注意点
利用したい機能を持ったクラスの実装を変えることなく、振る舞いを変えることが Adapter パタン
古株と新人の間に入って口利きする中間管理職的な、ちょっとかわいそうな娘 by デザインパターンたん
まとめ
えんいー
java-ja 怖いよ java-ja
おしまい