DDDのリポジトリについてちょっとしらべた
いきさつ
昔書いていたアプリケーションがあまりにあまりなので、
(モデルの責務がいたるところに染み出している)
DDD使って書き換えられないか検討するために勉強を始めた(1日目)
Repositoryからやっていきます
Repositoryについて
エンティティの永続化を担当する。
あと、エンティティの検索を担当する。
使われているところ&メリット
主にServiceクラスで使用されている。
ただし、Serviceクラスが依存しているのはRepositoryクラスそのものではなく、
Repositoryのinterfaceに依存している。
<?php class UserService { private $_userRepository; public function __constructor(IUserRepository $userRepository) { $this->_userRepository = $userRepository; } }
なので、もし別のリポジトリを使うことになってもServiceクラスを書き換える必要はない。
つまり、ORMを別のものに替えたり、もっと簡易なクエリビルダ的なものにしたりすることができる。
感想
そもそも今までActiveRecordパターンを使ったフレームワーク(Rails, FuelPHPのORM)での開発がほとんどで、
永続化したり検索したりする部分も"Model"でやっていたので新鮮。
ただ、まだちゃんとしたメリットまではわかっていない。
これから勉強していく。