Saturday, June 14, 2008

Menyadari Kesesatan Penggunaan Domain Model Pattern

Waktu diskusi terakhir tentang arsitektur framework software sama Harry dan Dankos, gw memulai diskusi masalah penggunaan model pattern di aristektur MVC yang kami gunakan. Martin Fowler menyebut model dalam MVC itu sebagai Domain Model pattern. Di diskusi itu kami diskusiin gimana seharusnya model itu diimplementasikan. Karena selama ini, logic aplikasi banyak terjadi di sisi controller atau DAO (kami pakai DAO untuk akses data). Hasil diskusi itu menyimpulkan perlu adanya perubahan.

Hari ini, lupa tadi nyari apa, tapi dapet artikel bagus banget. Tulisanya bisa dibaca di sini. Yang akhirnya di situ ada link ke tulisan Martin Fowler lagi, bisa dibaca di sini.

Martin Fowler (MF) membahas tentang anti-pattern yang namanya AnemicDomainModel. Anti-pattern adalah design pattern yang keliatanya benar tapi nyatanya jauh dari optimal jika digunakan. Anemic adalah salah satu anti-pattern.

Nah anemic ini yang ternyata selama ini banyaknya kami gunakan. Begitu juga di beberapa aplikasi yang orang lain buat yang gw pernah liat. Hmm, gw jelasin pake bahasa gw aja tentang anemic. Kalo mau baca penjelasan MF, liat di link tadi aja :)

Begini, di aplikasi yang terakhir kami buat, pada akhirnya model itu seperti struktur data struct (di C) atau type (di pascal). Model berisi kumpulan propoerty dan ada getter dan setternya. Tapi, behaviournya gak ada. Ataupun ada, hanya sedikit sekali. Business prosesnya ada di controller atau ada di DAO (banyaknya di DAO). Dan ada ganjelan di hati ini yang sangat luar biasa sekali disampaikan oleh MF di artikel itu.

The fundamental horror of this anti-pattern is that it's so contrary to the basic idea of object-oriented design; which is to combine data and process together.


Begitulah, ternyata slama ini gw sesat :)) Untuk mengungkap kesesatan-kesesatan yang lain, dan memperbaikinya. Sekarang lagi baca dua buku tentang pattern, Head First Design Pattern dan Patterns of Enterprise Application Architecture (Martin Fowler). Untuk liat pattern-pattern Enterprise Apps punya MF bisa diliat di sini.

Saran buat yang sama-sama sesat, baca buku Patterns of Enterprise Application Architecture di situ, ada penjelasan berikut contoh tentang penggunaan Domain Model pattern.