パターンを導入することで、「1対多」の関係から「1対1」の関係に落とし込める。することで、コードはシンプルになり、コーディングも保守も楽になる。中に一度だけ繰り返し処理を記述するだけで済むようになる。(デザインパターンへの回帰)テストファーストを実践することで、必然的に設計の分離性が促進される。テストの方法を考えるだけで、インタフェースを設計に追加することになる。パターンを乱用すると、理解しにくく、流れを追いにくくなってしまう。同じパッケージにまとめるべきものではない。クライアントは、それがコントロールするインタフェースとともにパッケージ化されるべき。システムの一部をその場しのぎで解決しても、あとからそれが原因で厄介な依存関係が生じ、まったく関係ない別のシステムで問題を引き起こす。依存関係をなくすことができる。つに併合せず、分離したまま結合することができる。パターンを使った方法は、シンプルで依存関係も正しい方向になる。つの階層構造を完全に分離することができるが、かなり複雑になるので、その必要がある局面でない限りおすすめできない。責任の所在をたやすく「不十分な設計」のせいにするべきではない。この世に十分な設計などありえない。存在するのは、コストと利益のバランスがとれるように設計された構造だけ。設計の変化をうまく管理するには、システムを極力シンプルかつ柔軟に保つこと。パターンを導入すると、ビジネスルールを他のあらゆる実装(データベース、COM、CORBA、EJB)から切り離すことができる。パターンの取り扱いはそれほど簡単ではなく、ほとんどのアプリケーションでは導入すべきではない。徹底的に分離することが望ましいケースもある。MW、データベースエンジン上に構築されているシステム。パフォーマンスの改善方法の検討は、実際にパフォーマンスが問題になっていることを検証して、それが実証された場合に限って行うべき。パターンと同様に依存関係の逆転を実現できる。ビジネスルールの継承構造を、他の実装(永続メカニズムなど)の継承構造と分離できる。ような多重継承をサポートした言語でしか採用できない。パターンなどを使えばよい。インタフェース導入すれば多重継承しなくてもよいんじゃない?その通り。退化版(インタフェース使わない版)とも言えるかもしれない。第3版から削除されたのはそれが理由かも。クライアントということを示していると思われる。この図だけではデータの永続化のタイミングはどうやって指定しているのか分からない。パターンは大きなデータ構造を渡り歩き、そのレポートを作成するような場合によく使われる。つのデータ構造をいろいろな形で利用しなければならないアプリケーションで使用される。される側のクラスをあまり変更することがない場合。側も再コンパイルしなければならない。パターン)を採用するとよい。パターンは若干複雑で、キャストを必要とする。パターンは魅惑的だが、通常はもっとシンプルな方法で解決できることが多い。パターンも、既存のクラス構造に影響を与えずに機能を追加するパターン。他のパターンより複雑だが、パワフルで柔軟性がある。オブジェクト生成のコストが無駄になるのでは?その通り。ほとんどどんな場合でも使用できる万能な設計ツール。テーブルを使うことで、設計者が見落としてしまいがちなマイナーな状態を発見できる。同等の機能が存在しないこと。変数をチェックするテストコードが書けない。使う方法の効率性、遷移テーブルを使う方法の柔軟性の両方を備えている。クラスのサブクラスを作成する作業が飽き飽きする。派生クラスに分離してしまい、保守が困難になる。クラスへの参照を保持していること。発生してはいけないイベントが発生したときにすぐ分かるようになる。分岐はインデクシングにより最適化される可能性が高い。n回イベントが発生したときに状態を遷移させるようなステートチャートは記述可能か?ガード条件を付加すれば可能。単純な表からコードを自動生成するようなことができなくなりそう。