AdapterパターンとBridgeパターン

デザインパターンは、先人たちの知恵のエッセンス前回のデザインパターンでは、生成に関するパターンとしてFactoryMethodパターンを取り上げました。第2回に取り上げるのは、構造に関するパターンのうちの2つ、AdapterパターンとBridgeパターンです。前回と同じようにUMLとサンプルコードを

清水 英雄

2009年5月19日 20:00

デザインパターンは、先人たちの知恵のエッセンス

前回のデザインパターンでは、生成に関するパターンとしてFactoryMethodパターンを取り上げました。

第2回に取り上げるのは、構造に関するパターンのうちの2つ、AdapterパターンとBridgeパターンです。前回と同じようにUMLとサンプルコードを元に解説していきたいと思います。

ここで、AdapterパターンとBridgeパターンの説明に入る前に、もう一度デザインパターンを学習する意味を考えてみたいと思います。

デザインパターンを知らなくともプログラムは書けます。では、なぜデザインパターンを学習するのでしょうか?デザインパターンを知ることによるメリットは何でしょうか?

それは「生産性」と「メンテナンス性」と説明しました。

オブジェクト指向を使用するプログラムは、初心者と達人とで大きく異なってきます。初心者から見ると達人のプログラムは難しくて理解に苦しみ、達人にとっては初心者のプログラムは修正しにくいものです。プログラミングされたものが工業製品である以上、品質に差が出るのはマイナス要素です。この差をできるだけ少なくするためにも、最初に先人たちの知恵のエッセンスであるデザインパターンを学び、オブジェクト指向の本来の意味を理解しておきましょう。

本記事中にあるサンプルコードを実際に入力・実行し、そのふるまいを確かめてください。そして、UMLでその構造とふるまいをイメージできるようになりましょう。

Adapterパターン <間にはさんでかみ合わせ>

異なるインターフェースを持つクラスの間にはさむことによってクラス間をつなげる役目をするのが、Adapterパターンです(図1)。どのようなふるまいをするのか、サンプルコードを見てみましょう。

この例では、2つのクラス(InLiveとAdaptee_TV)があります。どちらもプログラム上修正・変更できないクラスであると仮定しましょう。メソッドの内容は音楽を鑑賞するというものですが、InLiveクラスはRequest()、Adaptee_TVはspecific_Request()とメソッドの名称が異なっています。

Adapterクラスはこの2つのクラスの間に入り、Request()メソッドでspecific_Request()を実行させようとします。

実際にAdapterクラスの内部にAdaptee_TVクラスを包含します。InLiveクラスとインターフェース(ITarget)をあわせることで、Adaptee_TVクラスはRequest()メソッドを実装しなければならなくなります。

Request()メソッドの中で包含したAdaptee_TVクラスのインスタンスメソッドspscific_Request()を委譲します。こうすることで、2つのクラスをつなぐことができます。

この記事のキーワード :

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30