JavaRush /Java Blog /Random-ID /Perbedaan antara pola Negara dan Strategi di Jawa
0xFF
Level 9
Донецк

Perbedaan antara pola Negara dan Strategi di Jawa

Dipublikasikan di grup Random-ID
Untuk menggunakan pola Keadaan dan Strategi dengan benar dalam aplikasi inti Java, penting bagi pemrogram Java untuk memahami dengan jelas perbedaan di antara keduanya. Meskipun kedua pola, Keadaan dan Strategi, memiliki struktur serupa, dan keduanya didasarkan pada prinsip terbuka/tertutup, mewakili “O” dalam prinsip SOLID , maksud keduanya sangat berbeda . Perbedaan antara pola State dan Strategi di Java - 1Pola Strategi di Java digunakan untuk merangkum kumpulan algoritma terkait untuk memberikan fleksibilitas eksekusi kepada klien. Klien dapat memilih algoritma apa pun saat runtime tanpa mengubah konteks kelas yang menggunakan Strategy. Beberapa contoh pola Strategi yang populer adalah penulisan kode yang menggunakan algoritma, seperti enkripsi, kompresi, atau pengurutan. Di sisi lain, pola Negara memungkinkan suatu objek berperilaku berbeda di negara yang berbeda. Karena di dunia nyata suatu objek sering kali memiliki status, dan berperilaku berbeda di status yang berbeda, misalnya mesin penjual otomatis hanya menjual barang jika berada di negara bagian hasCoin, ia tidak akan terjual sampai Anda memasukkan koin ke dalamnya. Sekarang Anda dapat melihat dengan jelas perbedaan antara Strategi dan pola Negara, ini adalah niat yang berbeda. Pola Status membantu objek mengelola status, sedangkan pola Strategi memungkinkan klien memilih perilaku yang berbeda. Perbedaan lain yang tidak mudah dilihat adalah siapa yang mendorong perubahan perilaku. Dalam kasus pola Strategi, ini adalah klien yang menyediakan berbagai strategi sesuai konteks; dalam pola Negara, transisi dikendalikan oleh konteks atau keadaan objek itu sendiri. Selain itu, jika Anda mengelola sendiri perubahan status di objek Status, harus ada referensi ke konteksnya, misalnya, mesin penjual otomatis harus dapat memanggil metode setState()untuk mengubah status konteks saat ini. Di sisi lain, objek Strategi tidak pernah berisi referensi ke konteks; klien sendiri yang meneruskan Strategi pilihannya ke konteks. Perbedaan antara pola Keadaan dan Strategi adalah salah satu pertanyaan wawancara populer tentang pola Java , dalam artikel tentang pola Java ini kita akan melihatnya lebih dekat. Kami akan mengeksplorasi beberapa persamaan dan perbedaan antara pola Strategi dan Negara di Java yang akan membantu Anda meningkatkan pemahaman Anda tentang pola-pola ini.

Persamaan antara Pola Negara dan Strategi

Jika Anda melihat diagram UML pola Negara dan Strategi, Anda akan melihat bahwa keduanya terlihat mirip satu sama lain. Sebuah objek yang menggunakan State untuk mengubah perilakunya dikenal sebagai Context-object, demikian pula objek yang menggunakan Strategi untuk mengubah perilakunya disebut sebagai Context-object. Ingatlah bahwa klien berinteraksi dengan Context-objek. Dalam kasus pola Negara, konteksnya mendelegasikan metode ke objek Negara, yang dipegang sebagai objek saat ini, dan dalam kasus pola Strategi, konteksnya menggunakan objek Strategi sebagai parameter atau disediakan selama pembuatan. dari konteks objeknya. Diagram UML dari pola State di Java Perbedaan antara pola State dan Strategi di Java - 2 Diagram UML untuk pola State ini menggambarkan masalah klasik dalam membuat desain mesin penjual otomatis berorientasi objek di Java. Anda dapat melihat bahwa keadaan mesin penjual otomatis direpresentasikan menggunakan antarmuka, yang kemudian memiliki implementasi untuk mewakili keadaan tertentu. Setiap keadaan juga memiliki referensi ke konteks objek untuk melakukan transisi ke keadaan lain sebagai akibat dari tindakan yang dipanggil dalam konteks tersebut. Diagram UML dari pola Strategi di Java Perbedaan antara pola State dan Strategi di Java - 3 Diagram UML untuk pola Strategi ini berisi semacam implementasi fungsional. Karena ada banyak algoritma pengurutan, pola desain ini memungkinkan klien untuk memilih algoritma ketika mengurutkan objek. Faktanya, kerangka Java Collection menggunakan pola ini untuk mengimplementasikan metode Collections.sort()yang digunakan untuk mengurutkan objek di Java. Satu-satunya perbedaan adalah bahwa alih-alih mengizinkan klien memilih algoritme pengurutan, klien dapat menentukan strategi perbandingan dengan meneruskan instance antarmuka Comparator atau Comparable ke Java . Mari kita lihat beberapa persamaan antara dua pola desain utama di Java ini:
  1. Kedua pola, Keadaan dan Strategi, memudahkan penambahan keadaan dan strategi baru tanpa mempengaruhi konteks objek yang menggunakannya.

  2. Kedua hal ini menjaga kode Anda sesuai dengan prinsip terbuka/tertutup , artinya desain akan terbuka untuk ekstensi tetapi tertutup untuk modifikasi. Dalam kasus pola Negara dan Strategi, konteks objeknya tertutup terhadap modifikasi, pengenalan Negara baru atau Strategi baru, atau Anda tidak perlu mengubah konteks negara lain, atau perubahan minimal.

  3. Sama seperti konteks objek yang dimulai dengan keadaan inisialisasi objek dalam pola Negara, konteks objek juga memiliki strategi default dalam kasus pola Strategi di Java.

  4. Pola Negara merepresentasikan perilaku berbeda dalam bentuk status objek berbeda, sedangkan pola Strategi merepresentasikan perilaku berbeda dalam bentuk strategi objek berbeda.

  5. Kedua pola, Strategi dan Negara, bergantung pada subkelas implementasi perilaku. Setiap strategi konkret memperluas Strategi Abstrak; setiap negara bagian adalah subkelas dari antarmuka atau kelas abstrak yang digunakan untuk mewakili Negara.

Perbedaan Strategi dan Pola Negara di Jawa

Jadi sekarang kita tahu bahwa pola Negara dan Strategi memiliki struktur yang mirip, namun tujuannya berbeda. Mari kita lihat beberapa perbedaan utama antara pola desain ini.
  1. Pola Strategi merangkum serangkaian algoritma terkait, dan memungkinkan klien untuk menggunakan perilaku yang dapat dipertukarkan meskipun ada komposisi dan delegasi saat runtime, di sisi lain, pola Negara membantu kelas menunjukkan perilaku berbeda di negara bagian yang berbeda.

  2. Perbedaan berikutnya antara pola Negara dan Strategi adalah Negara merangkum keadaan suatu objek, sedangkan pola Strategi merangkum suatu algoritma atau strategi. Karena keadaan diasosiasikan dengan suatu objek maka keadaan tidak dapat digunakan kembali, namun dengan memisahkan strategi atau algoritma dari konteksnya kita dapat menggunakannya kembali.

  3. Dalam pola Negara, keadaan pribadi dapat memuat referensi terhadap konteks untuk melaksanakan transisi antar negara, namun Strategi tidak memuat referensi terhadap konteks penggunaannya.

  4. Implementasi suatu Strategi dapat diteruskan sebagai parameter ke objek yang akan menggunakannya, misalnya Collection.sort() mengambil Comparator yang merupakan strategi. Di sisi lain, keadaan adalah bagian dari konteks objek itu sendiri, dan seiring berjalannya waktu, konteks objek tersebut bertransisi dari satu keadaan ke keadaan lainnya.

  5. Meskipun Strategi dan Negara mengikuti prinsip terbuka/tertutup, Strategi juga mengikuti Prinsip Tanggung Jawab Tunggal karena setiap Strategi berisi algoritma individual, strategi-strategi yang berbeda tidak bergantung satu sama lain. Mengubah satu strategi tidak berarti mengubah strategi lainnya.

  6. Perbedaan teoritis lainnya antara pola Strategi dan Negara adalah bahwa pencipta mendefinisikan bagian “Bagaimana” dari objek, misalnya “Bagaimana” objek pengurutan mengurutkan data, sebaliknya, pola Negara mendefinisikan “apa” dan “kapan” bagian dari objek, misalnya apa yang dapat dilakukan suatu objek ketika berada dalam keadaan tertentu.

  7. Urutan transisi negara didefinisikan dengan baik dalam pola Negara; tidak ada persyaratan seperti itu untuk pola Strategi. Klien bebas memilih implementasi Strategi pilihannya.

  8. Beberapa contoh umum pola Strategi adalah enkapsulasi algoritma, seperti algoritma pengurutan, algoritma enkripsi, atau algoritma kompresi. Jika Anda melihat bahwa kode Anda harus menggunakan berbagai jenis algoritma terkait, Anda harus mempertimbangkan untuk menggunakan pola Strategi. Di sisi lain, mengenali penggunaan pola State cukup mudah, jika Anda perlu mengelola transisi state dan state tanpa banyak pernyataan kondisional yang bersarang, maka pola State adalah pola yang tepat untuk digunakan.

  9. Perbedaan terakhir namun paling penting antara pola Status dan Strategi adalah bahwa perubahan pada Strategi dilakukan oleh Klien, sedangkan perubahan pada Status dapat dilakukan oleh konteks atau status objek itu sendiri.

Ini semua tentang perbedaan antara pola Negara dan Strategi di Jawa . Seperti yang saya katakan, keduanya terlihat serupa di kelasnya dan diagram UML, keduanya memberikan prinsip terbuka/tertutup dan merangkum perilaku. Gunakan pola Strategi untuk merangkum algoritma atau strategi yang terkena konteks saat runtime, mungkin sebagai parameter atau objek komposit, dan gunakan pola Status untuk mengontrol transisi status di Java. Asli di sini
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION