Etki Alanı Modellerini uygulamanın farklı bölümlerinde nasıl yeniden kullanacağımı anlamaya çalışıyorum ve Veri Eşleyici şablonunun ileriye doğru yol aldığını hissediyorum. Aşağıdaki örnekte, Eşleştirmenin yöntemlerine doğrudan erişen yöntemler vardır. Etki Alanı Nesnesi birden çok Veri Eşleştiricisi gerekiyor
class Groups
{
protected $_groups = array();
public function addGroup($name)
{
$this->_groups[] = $name;
}
public function doSomethingGroupy($cakes)
{
// get all the groups that have cake
return $cakeyGroups;
}
}
... Ve bir haritacı Grupları sınıfına yöntemlerini eşleşecek. bir süre sonra aynı Gruplar Modelleri kullanmak ancak farklı sorguları kullanarak grupları eklemek istiyorsa
class GroupMapper
{
public function find($id, Groups $group)
{
// Mappy type things, maybe some sql
}
public function fetchByNeediness($cuddles, Groups $group)
{
// More mappy type things
}
public function save(Groups $groups)
{
// Saves
}
}
Ancak ben farklı eşleştiricisini kullanmak. Şimdi
class AngryGroupMapper
{
public function find($id, Groups $group)
{
// Something similar but with other tables and joins
}
public function fetchByRage($anger, Groups $group)
{
// Something new but only needed here
}
public function isEditable(Groups $groups)
{
// Do some querying
return $bool;
{
}
Ben amacı Sıska Denetleyicisi'dir bilin - Yağ Modeli, bu yüzden Modeli (tabiri caizse) Mapper Harita üzere başka bir model olurdu?
class FatModelRepository
{
public function getHappyGroups()
{
$mapper = new GroupMapper();
return $mapper->fetchByNeediness('Puffy Shoes', new Groups());
}
public function getSadGroups()
{
$mapper = new AngryGroupMapper();
return $mapper->fetchByRage('Aghh!', new Groups());
{
public function save(Groups $groups)
{
$mapper = new GroupMapper();
return $mapper->save($groups);
{
}
"Gruplar", "Grup" nesnelerini içeren bir koleksiyon ise ve bunlar bağımlı haritalama gerektiren modellerdir. Onları Gruplardan ayırmanız, bir Eşleştiricisi'nden geçirmeniz ve sonra bunları yeniden koleksiyona eklemeniz gerekir mi? Bu, İstemci/Denetleyici'nin Mappers hakkında bilgi sahibi olması anlamına mı geliyor? – gawpertron
'FatModel'inize bir Depo adı verilir. Burada iyi bir açıklama var: http://msdn.microsoft.com/en-us/magazine/dd569757.aspx#id0400058 – rojoca
Neden yapardınız? İhtiyaçlarınıza göre tasarlayın. Repo'yu önbellek olarak kullanmazdım. Önbelleği veri eşleştiricisine yerleştirin. – rojoca