MyEnigma

とある自律移動システムエンジニアのブログです。#Robotics #Programing #C++ #Python #MATLAB #Vim #Mathematics #Book #Movie #Traveling #Mac #iPhone

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

Bridge パターン

Bridgeパターンは、

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

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

クラス構成を明確にし、

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

デザインパターンです。


継承の用途としては、

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

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

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

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

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


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

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

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

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


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

機能追加をした場合、

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

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

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


Bridgeパターンでは、

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

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

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

渡せるような形にし、

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

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


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

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


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

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

cpp/Bridge.cpp at master -AtsushiSakai/cpp

MyEnigma Supporters

もしこの記事が参考になり、

ブログをサポートしたいと思われた方は、

こちらからよろしくお願いします。

myenigma.hatenablog.com