デザインパターン
今回はMediatorパターンの復習です。Mediatorパターンは、複数のオブジェクトが相互に作用し、状態を変更させるようなときに使用するパターンです。 全てのオブジェクトを統括するクラス(Mediator)を用意します。 個々の部品となるクラス(Colleague)は自分の…
今回はFacadeパターンの復習です。 Facadeパターンは複雑な処理に関する操作の窓口をシンプルにすることで クラスの操作を簡略化しているパターンです。 複雑なものを単純に見せる、裏で動いている処理を隠蔽することで単純化しています。 Facadeパターンが…
今回はChain of Responsibilityパターンの復讐です。 Chain of Responsibility このパターンは何らかの問題に対して複数の解決ロジックを連鎖的に適用することによって問題の解決を図るパターンです。 解決ロジックの追加のしやすさなどがキモとなっています…
今回はVisitorパターンの復習です。 Visitorパターン Visiorパターンは、データ構造とそれに対する処理を分離させるパターンです。 データ構造とそれに対する処理をそれぞれ別クラスにして分離させます。 また処理を行うメソッドは全て同一の名称となってお…
今回はDecoratorパターンの復習です。Decorator Decoratorパターンは、あるクラスを別のクラスに内包させ、そこで機能付加を行うパターンです。 内包するクラスは内包されるクラスを継承しています。 これがこのパターンのキモでしょう。 このように機能追加…
Composite今回はCompositeパターンの復習です。 Compositeパターンはあるオブジェクトとそれらを格納するオブジェクトを同一視したパターンです。 オブジェクトを格納するクラスと、格納されるオブジェクトを表現したクラスは共に同一のスーパークラスを持ち…
今回はStrategyパターンの復習です。 Strategyパターンは、アルゴリズムの切り替えを容易に行うためのパターンです。 何らかの動作をするときのアルゴリズムをクラスにして、分離させることで切り替えを容易にしています。 アルゴリズムという考え方そのもの…
今回はBridgeパターンの復習です。 Bridgeパターンは機能と実装の分離を目的としたパターンです。 実装と機能を分けることで、実装によらない機能追加、機能によらない実装の追加などが可能となります。 実装と機能が同じクラスに入っているよりも、両者を組…
今回はAbstractFacory、抽象工場の復習です。 抽象工場 このパターンは、BuilderパターンとFactoryMethodパターンの合成です。 特定の構造を持ったモノを生成するBuilderパターンに対して、 その生成過程を抽象化するFactoryMethodを適用することで複数の種…
今回はBuilderパターンの復習です。 Builderパターンは構造を持つインスタンスを段階的に組み上げて作成します。 まず、全体を部分に分割し、分割した要素を組み上げていくように作成します。 Builderパターンの要素 全体を作成するのに必要な全ての要素(部…
今回はPrototypeの復習です。 Prototypeパターン このではインスタンスの生成を、既存のインスタンスのコピーで行います。 これは、クラスとして表現するにはあまりにも複雑すぎるインスタンスの生成を行う際に威力を発揮します。 例えばペイントソフトなど…
今回はSingletonの復習です。 Singletonパターンは 「インスタンスがひとつしかないようなクラス構造」です。 コレをどのように活用するかと言うと 「ソフトウェアの設定について記述しておくクラス」 などに使うことが挙げられます。 Singletonのポイントと…
今回はFactoryMethodの復習です。 FactoryMethodはインスタンス生成の部分を共通化したTemplateMethodと言えます。 TemplateMethodの別バージョンですね。FactoryMethodではTeplateMethodで見られた骨組みの共通化という部分は同じです。しかしインスタンス…
今回はTemplateMethodの復習です。TemplateMethodは動作の骨組みを抽象クラスで規定しておき、 それに対して具体的な動作を具象クラスに記述するパターンです。まさにMethodのtemplate(雛形)、そのまんまですね。このパターンには、もとからあるコードに対し…
今日はデザインパターンAdapterの復習です。Adapterパターンは既存のクラスからのメッセージを変換し、適切なメッセージにして出力するパターンです。 要はラッパークラスですね。このパターンの肝はすでにテストを通過したユニットに適用することでコストを…
デザインパターンの復習をしています。 今回はIteratorです。 Iterator 「数え上げを行う仕組みを提供する」 この仕組みを利用するメリットとしては、 ・データの種類に関わらず共通の操作で数え上げが可能となる、操作の共通化。 が挙げられます。集合体を…