Proxyパターンとの向き合い方
APPLICATIONDESIGN勉強会 26章THU OCT 3RDKAZUKI CHIGITA
View Slide
課題ソフトウェアが境界を通過することは難しい.
課題ソフトウェアが境界を通過することは難しい.ー 意味のあるまとまり間のやりとりーネットワーク(TCP)やデータベース等の外部との接続
課題ソフトウェアが境界を通過することは難しい.ー 単一責任の原則(SRP)ー 閉鎖性共通の原則(CCP)ー 依存関係逆転の原則(DIP)ービジネスルールと外的ルールの分離これらができない傾向にある
例(ショッピングサイトのモデル)上のモデルに対してItemを追加するような操作をする.
前提(本当は全部data class なんだけどシンタックスが壊れたのでつけてない)
例(ショッピングサイトのモデル)
例(ショッピングサイトのモデル)強結合
例(ショッピングサイトのモデル)SPR & CCP違反
例(ショッピングサイトのモデル)SPR & CCP違反DIP違反
PROXYパターンの適用
PROXYパターンの適用Interfaceに切り出す.利用者はこれを使う.DBの実体.DB操作を担う Productのドメインに関する処理
PROXYパターンの適用Interfaceに切り出す.利用者はこれを使う.DBの実体.Productのドメインに関する処理DB操作を担う
PROXYパターンの適用Interfaceに切り出す.利用者はこれを使う.DBの実体.Productのドメインに関する処理DB操作を担うこれ無駄では?→
【再掲】例(ショッピングサイトのモデル)
【再掲】例(ショッピングサイトのモデル)個に対する操作にはあまり意味をなさない.
【再掲】例(ショッピングサイトのモデル)もとの課題でもあった関係性の強結合を解決する.
PROXYパターンの適用2
PROXYパターンの適用2処理の委譲が行われている
PROXYパターンの適用2DBに関する固有の処理ビジネスルールに関する処理使用者に対するinterface
PROXYパターンまとめーProxyパターンはビジネスルールとデータベースの処理を完全に切り離すことができるーここでは例示としてDBを扱ったが外部のAPIに対しても同じように扱うことができるーまた,SRP,CCP,DIPの各問題をクリアしている解決策とも言えるProxyはDBとimplの両者に紐付いており,変更の影響を強く受ける【問題点】
多重継承できる言語ならStairway to Heaven Patternの適用が可能
多重継承できる言語ならStairway to Heaven Patternの適用が可能←DBに対する知識を持っている.read(). write()のみの抽象クラス
多重継承できる言語ならStairway to Heaven Patternの適用が可能←DBに対する知識を持っている.read(). write()のみの抽象クラスビジネスルールDB知識
多重継承できる言語ならStairway to Heaven Patternの適用が可能←DBに対する知識を持っている.read(). write()のみの抽象クラスビジネスルールDB知識←適切に分離し,影響を最小限にする
DBと戦う他のアプローチーExtension Objectパターン(28章)ーVisitorパターン(28章)ーDecoratorパターン(29章)ーFacdeパターンー DatabaseFacadeを作成し,ビジネスロジックぽいものとDB知識っぽいものを分離して実装ー Façadeとそれに紐づくものが強結合してしまう問題点があるがリファクタしやすい.
参考文献ロバート・C・マーチン他.アジャイルソフトウェア開発の奥義第二版オブジェクト指向開発の真髄と匠の技.SBクリエイティブ,2008