Stratified Design
#WIP
書籍『Grokking Simplicity』によれば、「関数の抽象レベルを揃えてレイヤ化し、下のレイヤに依存する関数は、それらの呼び出しのみ行う(のが望ましい)設計手法」である。以下がメリットになる。
変更容易性
下位層の置き換えによって機能変更が実現できるため (各層が実装の詳細を持っていると修正箇所の特定が難しくなる)
読みやすさ
ざっくりした仕様を把握したければ、高抽象のレイヤの関数を読むだけで良い
再利用性
用語の出自は論文『Lisp: A Language for Stratified Design』(1988)だが、あまり詳しく書かれているわけではない。
レイヤードアーキテクチャとの比較
Stratified Designは POSAのレイヤードアーキテクチャと同じことを言っているに過ぎない。
だが、Stratified Design over Layered Designで指摘されている通り、現在レイヤードアーキテクチャと言われているもののレイヤ定義を見てみると、抽象レベルで分かれていないものが多い。
類似のパターン
Kent Beckの『実装パターン』に載っているComposed Methodパターンは、Stratified Designとほぼ同じことを言っている。
Strataを作るポイント
ビジネスルールのための条件分岐
データの内部構造(特にコレクション)の操作