Adapterパターン/Wrapperパターン@Java言語で学ぶデザインパターン入門

Java画像

参考にした本

以下の本です。

会社の上司にjava中級者必読と言われたので読み始めました。

Adapterパターンとは?

本書では以下のように説明されています。

「すでに提供されているもの」と「必要としているもの」の間のずれを埋めてめてくれるようなデザインパターン

例えば、直流12ボルトで動くノートパソコンを交流100ボルトのAC電源につなぐ時に変換してくれるのがACアダプターです。

このACアダプターのような役割を果たすのがAdapterパターンといいます。

別名Wrapperパターンというそうです。(本記事ではAdapterパターンということにします)

メリット

Adapterパターンのメリットは

  1. 既存のクラスを使いまわせるので、必要なメソッド群を素早く作れる
  2. 使いまわしたメソッドにはバグがないことがわかっているので、テストが楽

サンプルプログラムを見た後に、メリットを再確認してみましょう。

2つの実装方法

  1. クラスによるAdapterパターン(継承を使ったもの)
  2. インスタンスによるAdapterパターン(移譲を使ったもの)

クラスによるAdapterパターンのサンプルコード

PrintAdapteeクラス

Adapterされるクラス。元々用意されていたクラス。

Printクラス

PrintAdapteeクラスをこのクラスの形で使えるようにしたい。

PrintAdapterクラス

Printクラスで定義された形でPrintAdapteeクラスを使えるようにしたクラス。

Adapterパターンで重要なクラス

Mainクラス

MainクラスはPrintAdapteeクラスの存在を知らないように設計されている。

美しいですね。

インスタンスによるAdapterパターンのサンプルコード

変更点あまり多くありません

Printクラス

PrintAdapterクラス

メリットの確認

既存のクラスを使いまわせるので、必要なメソッド群を素早く作れる

これは一目瞭然ですね。

Adapteeクラスに欲しい実装がありますので、PrintAdapterクラスであたらに実装することは何もありません。

使いまわしたメソッドにはバグがないことがわかっているので、テストが楽

例えばPrintUpperCase()メソッドで改行を増やしたい場合は

このように書けば良いです。

この時改行に不具合があればprintOmoji()メソッドにバグがないことが分かっていれば、テストが楽ですね 🙂

最後に

今回はAdapterパターンについて学んでみました。

何か間違っているとかあればコメントで教えていただきたいです。

またデザインパターンの記事は他にもありますので、見ていただけると嬉しいです。

Java画像 Iteratorパターン@Java言語で学ぶデザインパターン入門

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


error: Content is protected !!