*デザインパターン [#sc8f0f4a] #contents **デザインパターンとは [#n9f1c4a3] オブジェクト同士の協調の例をまとめたものです。設計原則とサンプルコード(実装例)の中間に居るような感じです。 あくまでも「パターン」に過ぎないものです。これに当てはめれば問題が解決できるとか、そういうものではありません。そこを履き違えないように上手に使いましょう。 GoFとは、四人の野郎共(Gang of Four)と言う偉い人達が纏めたOOPの良い設計です。 実装レベルに近いので覚え易いのですが、その反面適切な使い方が分からず濫用してしまいがちなので注意しましょう。 //GOFのものがすなわちデザパタであるかのような説明はどうかと 熟れれば自然と、てのが多いかと。 * パターン [#u216ca41] いろいろありますが、大まかに分けて -生成 (オブジェクトを作る、Factoryパターンなど) -構造 (繋いだり組み立てたりする、Adapterパターンなど) -振る舞い (キモとなるクラスがなんかする、Commandパターンなど) (これは一概には言えませんが)生成に関するパターンはプログラムの最初の方で実行、構造は裏方、振る舞いがクライアントに対してインターフェイスを提供するなど、ある程度活躍の場が決まっています。 //以下分類されたパターン名と、テキトーな譯及び語源解釋を示す。まに受けぬやうに。でも多少わかりやすくなれば嬉しい。生成は最初期、構造は實裝策定、振舞ひは運用、と大まかに適用すべき場がありまする。 //** どうでもいい前書きと心構へ [#v82dc185] //語を成る可く語源を含めて示すのは、英語を解する者の感覺を、國語を解する我らに染込ませる目的であります。尤もよいのは英語で解することでありますが、容易ではありませぬ。そこである程度和譯を示す訣でありますが、誰かが公式に譯したとか、これが普遍的だといふのは近年少ないのであります。其の儘の語彙で憶えることもありませうが、尤も理解し易き語源を調べる者は少ないと云はざる得ませぬ。 //醫學用語が複雜に過ぎるとは言ひますが、これは漢文教養を削ぎ落とした現代人が愚かにも分らなくなつただけなのであつて、明治の偉人らの足下にも及ばぬ確たる證據なのであります。何かの學問をするにはそれが外國語であれば、その語源を繙くのは基本中の基本であります。キレート錯體と聞いて、キレートがギリシア語で蟹の爪と分れば、酒石酸カリウムナトリウムの構造をみた瞬間に、挾むのかと直觀できる。この化學の例に漏れず、古今東西不變の「勉強法」であります(勿論、化學物質に於ても語源をみた方が憶え易いと思はれる)。 //從つて、ここではやや難解かもしれませぬがある程度語源を調べた「語源抄譯」の如きを一覽に附すのであります。GoF が何故この語を選んだのか、その語感に觸れることで多少なりとも OOP の技術向上に役立てばと思ふ許りであります。習ふより慣れよ。まづは書くこと重要で、使ふことが重要なのではありませぬ。必要に應じて使用する技術を、工學的に分類せしめれば、以下のやうになつただけのことであります。 **生成に関するパターン [#ea1c9d5b] -[[Abstract Factory]] - 抽象行程(具象を司る者) -[[Builder]] - 築造行程(築き上げし者) -[[Factory]] - 一般行程(具象せし者) -[[Prototype]] - 原基行程(蹟意を寫せし者) -[[Singleton]] - 單機行程(各個起せし者) **構造に関するパターン [#qa490316] -[[Adapter]] - 調節構造(適合せし者) -[[Bridge]] - 克服構造(梁を亙す者) -[[Composite]] - 複葉構造(共に穿つ者) -[[Decorator]] - 修飾構造(飾り着けし者) -[[Facade]] - 屹然構造(屹ちし者;建築物の正面、前面。これはフランス語で正しくは façade と綴りセディーユを有す) -[[Flyweight]] - 輕量構造(跳びあがる者;ライト級) -[[Proxy]] - 代理構造(近づき易き者) **振舞に関するパターン [#gec14977] -[[Chain of Responsibility]] - 縮合行動(強か足枷を着けし者) -[[Command]] - 委讓行動(全きを委ねし者) -[[Interpreter]] - 自律行動(取り次ぐ者;インタープリタ) -[[Iterator]] - 反復行動(飽くほどに繰り返す者) -[[Mediator]] - 調律行動(中央に在て媒介する者) -[[Memento]] - 典禮行動(憶える者;これはラテン語で憶える、轉じて記念。memento mori など、カソリツク用語) -[[Observer]] - 監視行動(注視せる者) -[[State]] - 宣誓行動(そこにあつて名乗る者;状態) -[[Strategy]] - 眺望行動(指麾を執る者) -[[Template Method]] - 定式行動(遵ひ追隨する者) -[[Visitor]] - 訪問行動(眺めきたりし者) **参考リンク [#vad55784] -[[結城浩 - The Essence of Programming > 「デザインパターン」関連ページ:http://www.hyuki.com/catlink/83668355834383938370835E815B8393.html]] --[[デザインパターンFAQ:http://www.hyuki.com/dp/dpfaq.html]] --[[デザインパターン・メーリングリスト > リンク:http://www.hyuki.com/dp/dpml.html#link]] --[[ギコ猫とデザインパターン:http://www.hyuki.com/dp/cat_index.html]] --[[デザインパターン紹介 ―GoF以外のパターンを紹介します―:http://www.hyuki.com/dp/dpinfo.html]] -[[Programing Place > デザインパターン編:http://www.geocities.jp/ky_webid/design_pattern/index.html]] -[[サルでもわかる 逆引きデザインパターン:http://www.nulab.co.jp/designPatterns/designPatterns1/designPatterns1-1.html]] - 株式会社 ヌーラボ のサイト - 『アジャイル開発のヌーラボ』 内コンテンツ。 -[[Strategic Choice:http://d.hatena.ne.jp/asakichy/]] - 個人ブログ。ブログ内コンテンツにカタログ的なデザインパターンの解説あり。 --[[ [デザインパターン] - Strategic Choice:http://d.hatena.ne.jp/asakichy/searchdiary?word=%2a%5b%a5%c7%a5%b6%a5%a4%a5%f3%a5%d1%a5%bf%a1%bc%a5%f3%5d]] --[[GoFのデザインパターン - Strategic Choice:http://d.hatena.ne.jp/asakichy/20090227/1235739976]] --[[Grandのデザインパターン - Strategic Choice:http://d.hatena.ne.jp/asakichy/20090401/1238559855]] --[[POSAのデザインパターン - Strategic Choice:http://d.hatena.ne.jp/asakichy/20090623/1245715313]] --[[PLoPの汎用設計パターン - Strategic Choice:http://d.hatena.ne.jp/asakichy/20090507/1241663082]] --