Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 1.What is State patten?
- => State pattern adalah perilaku pola desain perangkat lunak yang memungkinkan sebuah objek untuk mengubah perilakunya ketika perubahan internal negara.
- 2.What are their benefit?
- => *Dengan pola Negara, manfaat penerapan perilaku polimorfik menjadi jelas, dan juga lebih mudah untuk menambahkan status untuk
- mendukung perilaku tambahan.
- *Dalam pola desain keadaan, perilaku objek adalah hasil dari fungsi keadaannya, dan perilaku akan berubah saat runtime tergantung
- pada keadaan. Ini menghilangkan ketergantungan pada if / else atau switch / case conditional logic. Misalnya, dalam skenario jarak
- jauh TV, kita bisa juga menerapkan perilaku dengan hanya menulis satu kelas dan metode yang akan meminta parameter dan melakukan
- tindakan (menghidupkan / mematikan TV) dengan blok if / else.
- *Pola desain negara juga meningkatkan Kohesi sejak perilaku spesifik negara dikumpulkan ke dalam kelas ConcreteState, yang
- ditempatkan di satu lokasi dalam kode.
- 3.What are their drawback?
- => Pola desain State dapat digunakan ketika kita perlu mengubah keadaan objek saat runtime dengan memasukkan subclass yang berbeda dari
- beberapa kelas dasar State. Keadaan ini adalah keuntungan dan kerugian dalam waktu yang bersamaan, karena kita memiliki kelas-kelas Negara yang jelas terpisah dengan beberapa logika dan dari sisi lain jumlah kelas bertambah.
- 4.When to use it at best?
- => saat perilaku suatu objek harus dipengaruhi oleh keadaan itu, dan ketika kondisi kompleks mengikat perilaku objek dengan keadaan itu.
- 5.When to NOT use it?
- =>
- interface MobileAlertState{
- public void alert(AlertStateContext ctx);
- }
- class AlertStateContext{
- private MobileAlertState currentState;
- public AlertStateContext() {
- currentState = new Vibration();
- }
- public void setState(MobileAlertState state) {
- currentState = state;
- }
- public void alert() {
- currentState.alert(this);
- }
- }
- class Vibration implements MobileAlertState{
- public void alert(AlertStateContext ctx) {
- System.out.println("Bergetar...");
- }
- }
- class Silent implements MobileAlertState{
- public void alert(AlertStateContext ctx) {
- System.out.println("Diam...");
- }
- }
- class StatePattern{
- public static void main(String[]args) {
- AlertStateContext stateContext = new AlertStateContext();
- stateContext.alert();
- stateContext.alert();
- stateContext.setState(new Silent());
- stateContext.alert();
- stateContext.alert();
- }
- }
Add Comment
Please, Sign In to add comment