DDD ve MVC: 'Model' ve 'İdare' arasındaki fark

0 Cevap php

Ben ciddiye MVC 'Modeli' kavramı hakkında kafam karıştı. Bugün var Çoğu çerçeveler Controller ve veritabanı arasında Modeli koymak ve Model neredeyse bir veritabanı soyutlama katmanı gibi davranır. Kontrolör daha mantık yapıyor başlar 'Fat Model Skinny Denetleyicisi' kavramı kaybolur.

DDD, bunun için benzersiz bir kimliğe sahip bir Domain biriminin, kavramı da var. Anladığım kadarıyla, bir kullanıcı (örneğin benzersiz kimliği,) bir idarenin iyi bir örnektir. Varlık bir yaşam döngüsü vardır - bu değerleri eylem boyunca değiştirebilirsiniz - ve sonra kaydedilen veya iptal oluyor.

Yukarıda tarif Varlık ben Modeli MVC olması gerekiyordu düşünce nedir? Nasıl off-baz miyim?

Daha fazla şeyler dağınıklığı için, böyle (belki orada bir Servisi koyarak) Depo desen gibi diğer desenleri, atmak. Nasıl bir model ile yok - Bu Repository bir İdarece ile etkileşim nasıl çok açık değil mi?

Kontrolörler bu Modeli gibi daha az benzersiz bir varlık daha bir "veritabanı tablo" olduğu gibi yapar, birden Modeller olabilir.

UPDATE: In this post Model bilgisi olan bir şey olarak tarif edilir ve tekil ya da nesneleri bir koleksiyon olabilir. Bu yüzden daha bir idareye ve Modeli gibi bir ses daha az ya da aynıdır. Bir Varlık daha spesifik olduğu Modeli, tüm kapsayan bir terimdir. Bir Değer Nesne de bir model olacaktır. En az MVC açısından. Belki mi??

Yani, çok kaba açısından, hangi daha iyi?

Hayır "Model" gerçekten ...

class MyController {
    public function index() {
        $repo = new PostRepository();
        $posts = $repo->findAllByDateRange('within 30 days');
        foreach($posts as $post) {
            echo $post->Author;
        }
    }
}

Veya DAO gibi bir modeli var ki bu?

class MyController {
    public function index() {
        $model = new PostModel();
        // maybe this returns a PostRepository?
        $posts = $model->findAllByDateRange('within 30 days');
        while($posts->getNext()) {
            echo $posts->Post->Author;
        }
    }
}

Hem bu örnekler bile yukarıda tarif ne yapmadım. Ben açıkça kayboldum. Herhangi bir giriş?

0 Cevap