Dear all, Saat ini saya sedang mengerjakan sebuah project java. Seperti biasa saya membagi applikasi ini jadi bbrp layer(dao, domain logic/service, presentation). Setelah bbrp bulan, project ini punya ribuan klas.
Masalah timbul disini. Saat ini saya sering merasa "tersesat" dalam develop apikasi ini (baik untuk design maupun programming). Usut punya usut, akhirnya saya sadar bahwa layer domain logic saya menggunakan transaction script pattern (Marting Fawler, Pattern for Enterprise Application Architecture). Yup, how stupid i am. Setelah baca2 n googling baru tau kalo transaction script pattern cuman cocok untuk layer domain logic yang gak terlalu komplek. Kalo mau yg complek ya pake domain model pattern (kata Martin Fowler). Sialnya pola pikir saya sudah "mendarah daging" dgn layering yg pake transaction script pattern (pada layer domain logic). Prosesnya spt ini : tiap table pada database punya entity pada java (saya pake JPA) -> Entity di akses(crud) oleh Dao (spring bean) -> Dao-dao digunakan oleh service layer (spring bean). Jadi, secara tidak sengaja, service layer saya sangat berbau procedural (meski saya sudah refactor layer service saya pake method-object, trus skrng pake Command pattern buat transaction script). Setelah baca2 lg, ternyata proses saya di atas itu anti-pattern Anemic Domain Model (Martin Fowler lg). nah loh... tambah bingung kan... padahal kbanyakan buku java (yg sy baca) mengajarkan proses spt diatas. Buat jugger, apa bisa sharing tentang layering kalian? terutama bgmn merubah pola pikir transaction script ke pola pikir domain model yg rich dan tidak terjebak dalam anemic domain model ? CMIIW thx all...