2012-04-01から1ヶ月間の記事一覧

デザインパターンを覚えたい (Command)

Commandパターン 種々のコマンドをクラスとして表現するパターン。ポイントは、 各コマンドに対してクラスを割り当てることでコマンドの追加・管理が容易になる 共通の実行形式にすることで、タスクリストによる逐次処理とかが実装しやすい とかかなぁ。うー…

デザインパターンを覚えたい (Proxy)

Proxyパターン 必要になってから作るパターン。実際の処理との間に一段クラスをかませることで、必要になるまで実処理の実行を抑止させる。 ポイントは ワンクッション挟むことで途中までの処理を肩代わりさせる 使う側からはProxyも実処理も透過的に見せる …

デザインパターンを覚えたい (Flyweight)

Flyweightパターン 共有で用いるインスタンスをプールし、使いまわすパターン。ポイントは 無駄なnewが減る メモリが節約できる GCがない言語とかだとnewそのものが減るのは安全性の観点でも効果がありそう。個人的にはSingletonとあんま違わないように見え…

デザインパターンを覚えたい (State)

Stateパターン 各状態に対して固有のクラスとして表現するパターン。特徴は 状態変化を単純なインスタンスの差し替えで表現できる 新しい状態の追加が用意 といったところ。クラス図だけ見るとStrategyパターンと同じだけど、違いは何だろ。 Strategyパター…

デザインパターンを覚えたい (Memento)

Mementoパターン 状態の履歴を保存するパターン。対象のインスタンスの情報を保持するMementoクラスを作成する。 ポイントは 保存・復元を行うクラスのインスタンス状態を保持するクラスを用意することで、内部状態操作を閉じた範囲で行える こと。インスタ…

デザインパターンを覚えたい (Observer)

Observerパターン 状態変化を他のオブジェクトに通知するパターン。 ポイントは 通知によって複数オブジェクト間で同期を取れる ことかな。前回のMediatorパターンと似てるけど、こっちは通知することが主目的。実装。いい例が思い浮かばなかったので今回は…

デザインパターンを覚えたい (Mediator)

Mediatorパターン 相談役は一人、なパターン。クラス間のやり取りをMediatorとなるクラスを介して行うことで、処理のパスを一箇所に集約する。 ポイントは クラス間の通信パスをスター型でまとめることでプログラムの見通しが良くなる Mediatorに相談するCol…

デザインパターンを覚えたい (Facade)

facadeパターン 複雑な処理の窓口となるクラスを用意し、複雑なAPIの操作を隠蔽するパターン。ポイントは、 相互に関係しあるAPIの処理フローをひとつのメソッドにまとめることにより、使う側から見てわかりやすいAPIにする といったところ?これだけだとあ…

デザインパターンを覚えたい (Visitor)

Visitorパターン データ構造上を探索しながら処理をしていくパターン。データとなるElementクラスとそれに処理を行うVisitorクラスを用意し、相互にメソッドを呼び合うことでデータの網羅的な処理を行う。 ポイントは データ構造とそれに対する処理を分離す…

デザインパターンを覚えたい (Chain of Responsibility)

Chain of Responsibilityパターン 処理をチェインさせて順次実行していき、目的の処理を決めるパターン。ポイントは、 処理と要求を結びつきを弱めることができる 状況に応じた処理の切り替えがしやすくなる といったところですかね。実装します。Javaの勉強…

デザインパターンを覚えたい (Decorator)

Decoratorパターン クラスをかぶせていって機能追加を行うパターン。共通の親元を持つ中身と飾りのクラスを用意し、共通メソッドを再帰的に呼び出していくことで機能拡張をする。 Decoratorパターンの特徴は、 共通の親クラスを持つサブクラスで包んでいくた…

デザインパターンを覚えたい (Composite)

Compositeパターン 共通メソッドによる再帰処理を行うパターン。 例えばファイルシステムの検索とかを実装する際に、FileクラスとDirectoryクラスを同一の親クラスを継承して作成することによって、クラスを同一視して扱うみたいな感じ。 Compositeパターン…