USE CASE CONTROLLER
Use case controller bertanggung jawab untuk mengoordinasikan komunikasi antara objek entitas dan objek antarmuka. Setelah menganalisis kelas yang diperlukan untuk melakukan aliran peristiwa use case, perilaku kemudian harus didistribusikan ke objek yang berinteraksi. Semua kelas yang berpartisipasi dapat dibagi setidaknya dalam dua kelompok: model, menggabungkan semua objek entitas; dan tampilan, yang menggabungkan objek antarmuka adapun fungsinya adalah:
- Switchboard antara kelas antarmuka pengguna dan kelas lapisan domain
- Mengurangi penggabungan antara tampilan dan lapisan domain
- Pengontrol dapat dibuat untuk setiap kasus penggunaan, namun, beberapa pengontrol dapat digabungkan bersama untuk sekelompok kasus penggunaan terkait
- Ini adalah kelas yang sepenuhnya buatan – artefak
Pola Use-Case Controller memberikan manfaat berikut:
- Lokalisasi aturan dan kebijakan bisnis. Pengontrol kasus penggunaan bekerja sebagai perekat antara antarmuka pengguna dan entitas domain dan menempatkan sebagian besar logika aplikasi yang terpisah dari dialog dan komponen sistem. Oleh karena itu, akan lebih mudah untuk menggabungkan perubahan tanpa mempengaruhi antarmuka, objek sistem atau skema database, karena perubahan fungsionalitas di masa mendatang akan memiliki lokalitas yang tinggi dalam pengontrol kasus penggunaan.
- Penggantian antarmuka pengguna dan komponen sistem dengan mudah. Pengontrol kasus penggunaan dipisahkan dari antarmuka pengguna dan komponen sistem. Oleh karena itu, beberapa komponen antarmuka pengguna dan komponen sistem dapat diimplementasikan dan digunakan oleh satu pengontrol dan dapat dengan mudah diganti secara statis dan dinamis.
- Visibilitas model use case yang berasal dalam kode implementasi. Pola tersebut menyarankan desain langsung dan implementasi realisasi use case. Dengan asumsi bahwa pola secara konsisten dipakai mengikuti beberapa konvensi pengkodean, implementasi kasus penggunaan akan mudah dikenali pada tingkat kode dan ditelusuri kembali ke model masing-masing.
- Konfigurasi aplikasi yang fleksibel menggunakan implementasi kasus penggunaan yang dapat dicolokkan. Pengontrol use-case merangkum fungsionalitas paling penting yang ditentukan dalam use case dan dapat dengan mudah diganti bahkan pada saat run-time. Oleh karena itu, pola memungkinkan konfigurasi aplikasi dengan plug-in komponen kasus penggunaan yang memiliki pengontrol kasus penggunaan di jantungnya
Sebaliknya, pola tersebut memiliki kelemahan seperti:
- Meningkatnya jumlah kelas. Karena pola tersebut memperkenalkan pemisahan konseptual antara antarmuka pengguna, model dan objek pengontrol, dibutuhkan lebih banyak kelas untuk mengimplementasikan fungsionalitas yang sama. Aspek ini harus dipertimbangkan dengan mengingat manfaat dari pemisahan perhatian dan perubahan yang meningkat versus dimensi sistem yang ada.
- Peningkatan kompleksitas. Pola tersebut menyarankan penetapan objek kontrol untuk setiap kasus penggunaan, yang dapat menghasilkan kode yang lebih kompleks daripada aslinya. Jika perilaku use-case tidak cukup kompleks untuk membenarkan penggunaan objek kontrol terpisah, objek kontrol harus dihindari.
- Aliran kontrol aplikasi sedikit lebih sulit untuk dilacak secara langsung dari pembacaan kode yang ketat karena seseorang harus menyadari prinsip desain dan konvensi pengkodean yang mengarah pada logika aplikasi yang diorganisir di seputar konsep kasus penggunaan. Di sisi lain, setelah diketahui model usecase yang mendasari, keterbacaan dan modularitas implementasinya sangat meningkat.
- Hubungan erat antara model dan tampilan dengan pengontrol. Pengontrol secara langsung memanggil fungsionalitas dari model dan tampilan, sehingga menyiratkan bahwa perubahan pada antarmuka model dan tampilan dapat berdampak pada pengontrol.
- Potensi ketidakstabilan implementasi terutama ketika model use case yang mendasarinya tidak stabil atau terorganisir dengan buruk.
REFERENCES
- Gamma, R. Helm, R. Johnson, and J.Vlissides, Design Patterns – Elements ofReusable Object-Oriented Software, Addison-Wesley, 1995.