オブジェクト指向
メソッドはできるだけ単純にしよう。読んで解読する人のことを考えよう。ここでは例として、指定の文字列中の指定の単語を "<B>" と "</B>" で囲んで強調表示に設定する場合を考える。この動作を分解すると、 指定の文字列から単語を抽出する。 抽出した単語が指定…
Interpreterパターンは、文法を解釈しその内容を実行するインタプリタの作成に使う。ここでは、以下の仕様の 1 桁の数字を計算するインタプリタを作ってみる。 使用できる演算子は '*' と '+'。 '*' は '+' より先に計算する。 '(' と ')' で囲んだ部分は先…
Stateパターンは、オブジェクトの状態によって動作を変えるときに使う。例として文字列の引用符 (") の対応をチェックしてみる。ここで、オブジェクトの状態は、 引用符の外 引用符の中 の二つ。それぞれの状態での動作は、
デザインパターンの中のVisitorパターンは、 データ構造をたどって、その要素について処理をし、かつ、 その処理が複数ある。 という場合に使う。ここでは、データ構造として以下のようなComponentクラス, Compositeクラス, およびLeafクラスを使った木構造…
エリック・エヴァンスのドメイン駆動設計 の中心となる二つの概念のまとめ。 ユビキタス言語 プロジェクト関係者がモデルの記述に使用する共通言語。 この言語をコミュニケーションからコードまで利用する。 モデル駆動設計 解決する問題の理解とソフトウェ…
Enum を使うと switch ... case ... することになる。たとえば、プログラム言語を Enum で定義して、その名前を表示する例。 using System; namespace UseClassInsteadOfEnum { public enum ProgrammingLanguageEnum { CSharp, Java, } public class ByEnum …
プログラムをオブジェクト指向にするには、 そのプログラムがなにをするか、に加えて、 それをどこにやらせるか、 が重要になる。気を付けるのは、他のクラスのプロパティを使って、いろいろ計算しているところ。次の例では、適用期間 (ApplicableTerm) クラ…
アナリシスパターンの知識レベル-操作レベルを使うときとして、 プログラムの再コンパイルなしで、 なにかの種類を増減したい。 場合がある。たとえば、測定の種類として身長や体重などがあるとする。これらがプログラムのコンパイル時点で決定できるならば…
データベースに関連が複雑なオブジェクトを保存するときに使用するパターン。参照: P of EAA: Serialized LOBたとえば、あるオブジェクトが個数が可変のオブジェクトを保持する場合、普通にデータベースのテーブルに保存しようとすると、 データベースに、そ…