実践、Interface
素朴な実装、テンプレート直書き(slide=12)
Viewにロジックが漏れている
具象への依存、Postモデルに分岐で実装(slide=16)
変更の波及箇所が多い(IMO:Open Closedでなさそう)
抽象への依存、HasLoginWall interface(slide=19)
getLoginWallメソッドを持たせる
具体のUserに実装させる
使う側のコードが短く
interfaceの効能の1つは、依存の向きが逆転したこと(slide=27)
PostはUserを知っていなくてよい(依存しない)
PostはHasLoginWallに依存
(このinterfaceを実装したモノが来る。詳細は知らなくてよい)
具体のUserはHasLoginWallを実装
さらに効能2つ(slide=27)
抽象という安定に依存
拡張性
オススメ
OOC 2024、ふわせぐさん