Seorang kolega saya menyarankan menggunakan kelas pabrik untuk membuat objek viewmodel dalam solusi ASP.NET MVC kami. Gagasannya adalah dapat membantu desain, dan rawatan, dari cara viewmodels dibangun di aplikasi kami.
Saya ingin mencari tahu apakah ada orang lain yang memiliki pengalaman ini. Saya telah melakukan beberapa penelitian dan menemukan sangat sedikit pada praktik ini.
Saat ini kami membuat objek viewmodel di tingkat controller misalnya
public ActionResult Index()
{
return this.View(this.BuildIndexViewModel());
}
Jadi this.BuildIndexViewModel () bertanggung jawab untuk membuat kelas viewmodel (jelas :). Tapi kami sedang mencari kemungkinan:
public ActionResult Index()
{
return this.View(ViewModelFactory.CreateIndexViewModel());
}
Ini ide yang menarik, tapi saya tidak 100% yakin. Saya tertarik pada pendapat orang lain tentang ini.
design
asp.net-mvc
Jason Evans
sumber
sumber
Jawaban:
Dalam hal ini saya akan mengatakan pedoman terbaik untuk diikuti adalah prinsip-prinsip GRASP . Secara khusus melihat empat kriteria menugaskan pembuatan objek:
Secara umum, kelas B harus bertanggung jawab untuk membuat instance kelas A jika satu, atau lebih disukai, dari yang berikut ini berlaku
Kelas pengontrol Anda (B) cocok dengan item # 3 & # 4 dari daftar itu (dan # 2 jika viewmodel dikembalikan), jadi itu sudah tempat yang sangat masuk akal untuk perilaku konstruksi viewmodel (A) untuk hidup. Seperti yang saya lihat, hanya ada dua alasan yang memaksa saya untuk mengekstrak perilaku konstruksi itu ke dalam kelas spesialis.
Melihat kembali ke 4 kriteria penciptaan objek di GRASP, saya hanya akan mengekstrak perilaku ke pabrik terpisah jika itu memberi saya centang tambahan pada daftar itu. Kalau tidak, tidak akan ada gunanya melakukannya.
Semoga itu bisa membantu!
sumber