Tags
25 ページ目
Code-Archaeologist
正規表現で場当たりに解析していたスクリプトに、条件を足すたび限界が来る。文法を構文木にする【Interpreter】
新しい操作を足すたびに、型判定の分岐が呼び出し側に増える。操作を訪問者にして追加する【Visitor】
配列がむき出しで、構造が変わるたびに呼び出し側の走査を書き直すことになる。走査を専用の部品に任せる【Iterator】
カプセル化を壊さずに、状態を退避して後で戻したい。中身を覗かせない保管箱を作る【Memento】
モジュール同士が直接呼び合って、依存が網の目になる。やり取りを仲介役に集める【Mediator】
権限チェックを全部抱え込んだゲートが、条件を足すたびに膨らむ。審査を順に回す仕組みにする【Chain of Responsibility】
崩落の検知に、ブザーと扉と照明を直接呼んでいる。変化を知らせるだけにして連動させる【Observer】
状態を確かめる if-else が、メソッドごとに泥沼になる。状態ごとの部品に振る舞いを持たせる【State】
レバーが機器を直接呼ぶ作りで、操作の履歴も取り消しもできない。操作をオブジェクトにする【Command】
罠が増えるたびに defend メソッドを開いて書き換える。防御の方法を部品にして差し替える【Strategy】
解除コードを10個コピペして、手順の修正が全部に及ぶ。共通の流れを親にまとめる【Template Method】
数千体のゴーレムが同じデータを抱えてメモリが尽きる。共通部分を1つにまとめて共有する【Flyweight】
遠くて危険なデータ源へ、アクセス制限と取得の手間を呼び出し側に背負わせたくない。代理役を立てる【Proxy】
バルブ、ダクト、点火を決まった順に呼ばないと爆発する。起動手順を窓口1つにまとめる【Facade】
暗視も熱感知も付けたいのに、継承では組み合わせごとにクラスが要る。重ね着で機能を足す【Decorator】
1
2