Somethingこの広告は、90日以上更新していないブログに表示しています。パターンとはこのパターンは、既存のオブジェクトに新しい機能や振る舞いを動的に追加することを可能にする。Wikipediaスポンジケーキが1つあるとする。クリームを塗れば何も載っていないショートケーキができあがる。いちごを並べれば、ストロベリーショートケーキができあがる。いずれにおいてもベースとなるのはスポンジケーキである。様々なデコレーションを施すことで、様々な目的にあったケーキとなる。オブジェクトもこのような性質がある。中心となるベースオブジェクトがある。それに飾り付けとなる機能を一皮一皮かぶせていくことで、より目的にあったオブジェクトに仕上げていく。このようなオブジェクトにデコレーションを施していくようなデザインパターンをDecoratorパターンと呼ぶ。example文字列の周りへ飾り枠をつけて表示するサンプルコード。StringDisplay("こんにちは。world!|*||//||*+-------------+*||//|+-----------------+|//+-------------------+/ソースコードgithub.com役割Component機能を追加するときの核となる役。デコレーションする前のスポンジケーキ(ベース)部分にあたる。インターフェースだけを定める。サンプルコードにおけるDisplayクラス。ConcreteComponent具体的な実装をしているスポンジケーキ。サンプルコードにおけるStringDisplayクラス。DecoratorComponent役と同じインターフェースを持つ。Decorator役が飾る対象となるComponentを持つ。この役は、自分が飾っている対象を知っている。サンプルコードにおけるBorderクラス。ConcreteDecorator具体的なDecoratorの役。FullBorderクラス。まとめ透過的インターフェースDecoratorパターンでは飾り枠と中身を同一視している。サンプルコードでは、飾り枠を表すBorderクラスが、中身を表すDisplayクラスのサブクラスになっているところで、その同一視が表現されている。飾り枠を使って中身を包んでも、インターフェースは「透過的」(隠れていない状態)であるため、飾り枠をたくさん使って包んでも、インターフェースは全く変更されない。包まれるもの(中身)を変えずに機能追加ができるDecoratorパターンでは、委譲が使われている。飾り枠に対してやってきた要求はその中身にたらい回し(委譲)される。動的な機能追加ができる委譲でクラス間をゆるやかに結合しているため。オブジェクトを以前の状態に(ロールバッ...2017-06-09多重配列内の特定のキーを検索しその値を取り出す下のような多重配列があるとする。(1)はてなブログをはじめよう!tic40さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。