Bridge パターン

デザインパターンちゃんと勉強をしようと思ったので結城さんの本を 1 つ 1 つ実装してみる。 前回の Abstract Factoryからの続き。

「橋渡し」のクラスを用意することによって、クラスを複数の方向に拡張させることを目的とする。

今回は Wikipedia の解説もわかりやすい。階層構造で継承をする事で共通化できないものを移譲する事で機能と実装を分けると行った所か。

クラス図

Bridge PlantUML

自分としての理解・疑問

  • これは最初に設計をする段階で見えている時と見えていない時がありそう。
  • 実装側の共通化部分を最初に作るという所で判断ができるのかも。

なんにせよ実装側の抽象クラスを読み込んで使い回すという所がここのキモだろうと思う。

<?php
/**
 * コンストラクタ
 *
 * @access public
 * @param DisplayImpl $impl 実装オブジェクト
 * @return void
 */
public function __construct(DisplayImpl $impl)
{
    $this->impl = $impl;
}

参考