読者です 読者をやめる 読者になる 読者になる

MyEnigma

とあるエンジニアのブログです。#Robotics #Programing #C++ #Python #MATLAB #Vim #Mathematics #Book #Movie #Traveling #Mac #iPhone

C++によるデザインパターン9: Bridge パターン

増補改訂版 Java言語で学ぶデザインパターン入門

増補改訂版 Java言語で学ぶデザインパターン入門

オブジェクト指向における再利用のためのデザインパターン

オブジェクト指向における再利用のためのデザインパターン

  • 作者: エリックガンマ,ラルフジョンソン,リチャードヘルム,ジョンブリシディース,Erich Gamma,Ralph Johnson,Richard Helm,John Vlissides,本位田真一,吉田和樹
  • 出版社/メーカー: ソフトバンククリエイティブ
  • 発売日: 1999/10
  • メディア: 単行本
  • 購入: 21人 クリック: 711回
  • この商品を含むブログ (210件) を見る


Bridge パターン

Bridgeパターンは、

継承による機能追加と継承による機能実装を

区別するようなクラス構成にすることで、

クラス構成を明確にし、

機能追加と機能実装をしやすい形にする

デザインパターンです。


継承の用途としては、

基本機能をもつスーパークラスに機能を追加するために、

サブクラスを作成する目的と、

以前紹介した、Templete Methodのような

インターフェースだけを持つ抽象クラスを作成し、

その中身をサブクラスの継承に任せる機能実装があります。


この機能実装と機能追加は、別の目的ですが、

使用する継承は同じなので、

これらを区別しないで利用すると、

クラス構成が不明瞭になります。


また、ある機能実装されたクラスに

機能追加をした場合、

機能追加のためのサブクラスにも、

機能実装をしなければならないため、

不要なプログラム変更が多くなってしまいます。


Bridgeパターンでは、

APIを記述した仮想クラスのオブジェクトを

メインのクラスに持たせて、

機能実装はTemplate Methodで継承したものを

渡せるような形にし、

機能追加はメインクラスを継承させるようにすることで、

機能追加と機能実装を明確にわけるようにするデザインパターンです。


コードを読んだ側もこのクラスが

機能追加用なのか、機能実装ようなのかを判断しやすくなります。


C++によるサンプルコード

下記のGitHubページにて公開しています。

cpp/Bridge.cpp at master -AtsushiSakai/cpp

参考資料

myenigma.hatenablog.com
myenigma.hatenablog.com
myenigma.hatenablog.com
myenigma.hatenablog.com
myenigma.hatenablog.com
myenigma.hatenablog.com
myenigma.hatenablog.com
myenigma.hatenablog.com
myenigma.hatenablog.com
myenigma.hatenablog.com
myenigma.hatenablog.com
myenigma.hatenablog.com
myenigma.hatenablog.com
myenigma.hatenablog.com
myenigma.hatenablog.com
myenigma.hatenablog.com
myenigma.hatenablog.com
myenigma.hatenablog.com
myenigma.hatenablog.com
myenigma.hatenablog.com
myenigma.hatenablog.com
myenigma.hatenablog.com
myenigma.hatenablog.com


増補改訂版 Java言語で学ぶデザインパターン入門

増補改訂版 Java言語で学ぶデザインパターン入門

オブジェクト指向における再利用のためのデザインパターン

オブジェクト指向における再利用のためのデザインパターン

  • 作者: エリックガンマ,ラルフジョンソン,リチャードヘルム,ジョンブリシディース,Erich Gamma,Ralph Johnson,Richard Helm,John Vlissides,本位田真一,吉田和樹
  • 出版社/メーカー: ソフトバンククリエイティブ
  • 発売日: 1999/10
  • メディア: 単行本
  • 購入: 21人 クリック: 711回
  • この商品を含むブログ (210件) を見る