andari3107

state pattern

Mar 4th, 2019
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.44 KB | None | 0 0
  1. 1.What is State patten?
  2. => State pattern adalah perilaku pola desain perangkat lunak yang memungkinkan sebuah objek untuk mengubah perilakunya ketika perubahan internal negara.
  3. 2.What are their benefit?
  4. => *Dengan pola Negara, manfaat penerapan perilaku polimorfik menjadi jelas, dan juga lebih mudah untuk menambahkan status untuk
  5.     mendukung perilaku tambahan.
  6.    *Dalam pola desain keadaan, perilaku objek adalah hasil dari fungsi keadaannya, dan perilaku akan berubah saat runtime tergantung  
  7.     pada keadaan. Ini menghilangkan ketergantungan pada if / else atau switch / case conditional logic. Misalnya, dalam skenario jarak
  8.     jauh TV, kita bisa juga menerapkan perilaku dengan hanya menulis satu kelas dan metode yang akan meminta parameter dan melakukan
  9.     tindakan (menghidupkan / mematikan TV) dengan blok if / else.
  10.    *Pola desain negara juga meningkatkan Kohesi sejak perilaku spesifik negara dikumpulkan ke dalam kelas ConcreteState, yang
  11.     ditempatkan di satu lokasi dalam kode.
  12. 3.What are their drawback?
  13. => Pola desain State dapat digunakan ketika kita perlu mengubah keadaan objek saat runtime dengan memasukkan subclass yang berbeda dari
  14. 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.
  15. 4.When to use it at best?
  16. => saat perilaku suatu objek harus dipengaruhi oleh keadaan itu, dan ketika kondisi kompleks mengikat perilaku objek dengan keadaan itu.
  17. 5.When to NOT use it?
  18. =>
  19.  
  20.  
  21. interface MobileAlertState{
  22.     public void alert(AlertStateContext ctx);
  23. }
  24. class AlertStateContext{
  25.     private MobileAlertState currentState;
  26.     public AlertStateContext() {
  27.         currentState = new Vibration();
  28.     }
  29.     public void setState(MobileAlertState state) {
  30.         currentState = state;
  31.     }
  32.     public void alert() {
  33.         currentState.alert(this);
  34.     }
  35. }
  36.  
  37. class Vibration implements MobileAlertState{
  38.    
  39.     public void alert(AlertStateContext ctx) {
  40.         System.out.println("Bergetar...");
  41.     }
  42. }
  43.  
  44. class Silent implements MobileAlertState{
  45.    
  46.     public void alert(AlertStateContext ctx) {
  47.         System.out.println("Diam...");
  48.     }
  49. }
  50.  
  51. class StatePattern{
  52.     public static void main(String[]args) {
  53.         AlertStateContext stateContext = new AlertStateContext();
  54.         stateContext.alert();
  55.         stateContext.alert();
  56.         stateContext.setState(new Silent());
  57.         stateContext.alert();
  58.         stateContext.alert();
  59.     }
  60. }
Add Comment
Please, Sign In to add comment