Adapterアダプター-デザインパターン勉強メモ
Adapterアダプター 『adapt(適合)させるもの』という意味。
『すでに用意されているもの』を『使える形』にするためのデザインパターンだと理解しています。
増補改訂版Java言語で学ぶデザインパターン入門のAdapterの章でとても分かりやすい例を使って説明されていたのでパクらせて頂き、自分の言葉で説明してみる。
ノートパソコンを使うときは電源が必要です。でも、『すでに用意されているもの』である交流100Vをそのまま使用することはできません。直流10.5Vとか直流12Vとかの『使える形』にする必要があります。具体的にはACアダプターを使いますが、プログラムの話に戻した場合、その役割を果たすのがAdapterアダプターデザインパターンです。間違って解釈してたらごめんなさい。
『継承』を使ったものと、『委譲』を使ったものがあります。
簡単なやつを作ってみます。
クラス | 説明 |
---|---|
Print.java | インタフェース |
PrintHello.java | 『使える形』にするためのクラス |
Hello.java | 『すでに用意されているもの』のクラス |
Main.java | ちゃんとできているかテスト用クラス |
継承を使った方法
Print.java 1 public interface Print { 2 public void print(); 3 }
PrintHello.java 1 public class PrintHello extends Hello implements Print { 2 public PrintHello() { 3 } 4 public void print() { 5 hello(); 6 } 7 }
Hello.java 1 public class Hello { 2 public Hello() { 3 } 4 public void hello() { 5 System.out.println("Hello World"); 6 } 7 }
Main.java 1 public class Main { 2 public static void main(String[] args) { 3 Print p = new PrintHello(); 4 p.print(); 5 } 6 }
試してみる。
$ java Main Hello World
委譲を使った方法
Print.java 1 public interface Print { 2 public void print(); 3 }
PrintHello.java 1 public class PrintHello implements Print { 2 public PrintHello() { 3 Hello h = new Hello(); 4 } 5 public void print() { 6 h.hello(); 7 } 8 }
Hello.java 1 public class Hello { 2 public Hello() { 3 } 4 public void hello() { 5 System.out.println("Hello World"); 6 } 7 }
Main.java 1 public class Main { 2 public static void main(String[] args) { 3 Print p = new PrintHello(); 4 p.print(); 5 } 6 }
試してみる。
$ java Main Hello World
学習教材
- 作者: 結城浩
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2004/06/19
- メディア: 大型本
- 購入: 51人 クリック: 762回
- この商品を含むブログ (397件) を見る
Javaデザインパターン徹底攻略 (標準プログラマーズライブラリ)
- 作者: 日立ソフトウェアエンジニアリングインターネットビジネス部
- 出版社/メーカー: 技術評論社
- 発売日: 2002/09
- メディア: 単行本
- 購入: 7人 クリック: 33回
- この商品を含むブログ (24件) を見る
2008年12月23日追記
・てか、結城さんの例えが秀逸。
・継承と委譲の2種類があるけど、やってることは一緒だよ。