JavaRush /Blog Java /Random-MS /Perbezaan antara corak Negeri dan Strategi di Jawa
0xFF
Tahap
Донецк

Perbezaan antara corak Negeri dan Strategi di Jawa

Diterbitkan dalam kumpulan
Untuk menggunakan corak Negeri dan Strategi dengan betul dalam aplikasi Java teras, adalah penting bagi pengaturcara Java untuk memahami dengan jelas perbezaan antara mereka. Walaupun kedua-dua corak, Negeri dan Strategi, mempunyai struktur yang serupa, dan kedua-duanya adalah berdasarkan prinsip terbuka/tertutup, mewakili "O" dalam prinsip SOLID , ia adalah berbeza sama sekali dalam niat . Perbezaan antara corak Negeri dan Strategi di Jawa - 1Corak Strategi dalam Java digunakan untuk merangkum set algoritma yang berkaitan untuk memberikan fleksibiliti pelaksanaan kepada pelanggan. Pelanggan boleh memilih mana-mana algoritma semasa runtime tanpa mengubah konteks kelas yang menggunakan Strategy. Beberapa contoh popular corak Strategi ialah menulis kod yang menggunakan algoritma, seperti penyulitan, pemampatan atau pengisihan. Sebaliknya, corak Negeri membenarkan objek berkelakuan berbeza dalam keadaan berbeza. Kerana dalam dunia nyata objek selalunya mempunyai keadaan, dan ia berkelakuan berbeza di negeri yang berbeza, contohnya, mesin layan diri hanya menjual barang jika ia berada di negeri hasCoin, ia tidak menjual sehingga anda meletakkan syiling di dalamnya. Kini anda dapat melihat dengan jelas perbezaan antara corak Strategi dan Negeri, ini adalah niat yang berbeza. Corak State membantu objek mengurus keadaan, manakala corak Strategi membolehkan pelanggan memilih tingkah laku yang berbeza. Satu lagi perbezaan yang tidak begitu mudah dilihat ialah siapa yang mendorong perubahan tingkah laku. Dalam kes corak Strategi, ini ialah pelanggan yang menyediakan pelbagai strategi kepada konteks; dalam corak Negeri, peralihan dikawal oleh konteks atau keadaan objek itu sendiri. Selain itu, jika anda menguruskan sendiri perubahan keadaan dalam objek Negeri, mesti ada rujukan kepada konteks, contohnya, mesin layan diri mesti boleh memanggil kaedah setState()untuk menukar keadaan semasa konteks. Sebaliknya, objek Strategi tidak pernah mengandungi rujukan kepada konteks; klien itu sendiri menyerahkan Strategi pilihannya kepada konteks. Perbezaan antara corak Negeri dan Strategi ialah salah satu soalan temu bual popular tentang corak Java , dalam artikel mengenai corak Java ini kita akan melihatnya dengan lebih dekat. Kami akan meneroka beberapa persamaan dan perbezaan antara corak Strategi dan Negeri di Jawa yang akan membantu anda meningkatkan pemahaman anda tentang corak ini.

Persamaan antara corak Negeri dan Strategi

Jika anda melihat gambar rajah UML bagi corak Negeri dan Strategi, anda akan melihat bahawa kedua-duanya kelihatan serupa antara satu sama lain. Objek yang menggunakan State untuk mengubah tingkah lakunya dikenali sebagai Context-objek, begitu juga objek yang menggunakan Strategi untuk mengubah tingkah lakunya dirujuk sebagai Context-objek. Ingat bahawa klien berinteraksi dengan Context-objek. Dalam kes corak State, konteks mewakilkan kaedah panggilan ke objek State, yang dipegang sebagai objek semasa, dan dalam kes corak Strategi, konteks menggunakan objek Strategi sebagai parameter atau disediakan semasa penciptaan konteks objek. Gambar rajah UML bagi corak Negeri di Jawa Perbezaan antara corak Negeri dan Strategi di Jawa - 2 Gambar rajah UML untuk corak Negeri ini menggambarkan masalah klasik untuk mencipta reka bentuk mesin layan diri berorientasikan objek di Jawa. Anda boleh melihat bahawa keadaan mesin layan diri diwakili menggunakan antara muka, yang kemudiannya mempunyai pelaksanaan untuk mewakili keadaan tertentu. Setiap keadaan juga mempunyai rujukan kepada konteks objek untuk membuat peralihan kepada keadaan lain sebagai hasil daripada tindakan yang dipanggil dalam konteks. Gambar rajah UML bagi corak Strategi dalam Java Perbezaan antara corak Negeri dan Strategi di Jawa - 3 Gambar rajah UML untuk corak Strategi ini mengandungi jenis pelaksanaan berfungsi. Memandangkan terdapat banyak algoritma pengisihan, corak reka bentuk ini membolehkan pelanggan memilih algoritma semasa menyusun objek. Malah, rangka kerja Java Collection menggunakan corak ini untuk melaksanakan kaedah Collections.sort()yang digunakan untuk mengisih objek dalam Java. Satu-satunya perbezaan ialah daripada membenarkan pelanggan memilih algoritma pengisihan, ia membenarkan ia menentukan strategi perbandingan dengan menghantar contoh antara muka Pembanding atau Sebanding ke Java . Mari kita lihat beberapa persamaan antara dua corak reka bentuk utama di Jawa ini:
  1. Kedua-dua corak, State dan Strategy, memudahkan untuk menambah keadaan dan strategi baharu tanpa menjejaskan konteks objek yang menggunakannya.

  2. Kedua-dua ini mengekalkan kod anda mengikut prinsip terbuka/tertutup , bermakna reka bentuk akan terbuka kepada sambungan tetapi ditutup kepada pengubahsuaian. Dalam kes corak Negeri dan Strategi, konteks objek ditutup kepada pengubahsuaian, pengenalan Negeri baharu atau Strategi baharu, atau anda tidak perlu mengubah suai konteks negeri lain, atau perubahan minimum.

  3. Sama seperti konteks objek bermula dengan keadaan permulaan objek dalam corak State, konteks objek juga mempunyai strategi lalai dalam kes corak Strategi di Jawa.

  4. Corak State mewakili tingkah laku yang berbeza dalam bentuk keadaan objek yang berbeza, manakala corak Strategi mewakili tingkah laku yang berbeza dalam bentuk strategi objek yang berbeza.

  5. Kedua-dua corak, Strategi dan Keadaan, bergantung pada subkelas pelaksanaan tingkah laku. Setiap strategi konkrit memanjangkan Strategi Abstrak; setiap negeri ialah subkelas antara muka atau kelas abstrak yang digunakan untuk mewakili Negeri.

Perbezaan antara Strategi dan corak Negeri di Jawa

Jadi sekarang kita tahu bahawa corak Negeri dan Strategi adalah serupa dalam struktur, tetapi niatnya berbeza. Mari lihat beberapa perbezaan utama antara corak reka bentuk ini.
  1. Corak Strategi merangkum satu set algoritma yang berkaitan, dan membenarkan klien menggunakan gelagat yang boleh ditukar ganti walaupun komposisi dan delegasi pada masa jalanan, sebaliknya, corak Negeri membantu kelas mempamerkan gelagat berbeza dalam keadaan berbeza.

  2. Perbezaan seterusnya antara corak State dan Strategy ialah State merangkum keadaan objek, manakala corak Strategy merangkum algoritma atau strategi. Memandangkan keadaan dikaitkan dengan objek, ia tidak boleh digunakan semula, tetapi dengan mengasingkan strategi atau algoritma daripada konteksnya, kita boleh menggunakannya semula.

  3. Dalam corak Negeri, keadaan peribadi mungkin mengandungi rujukan kepada konteks untuk melaksanakan peralihan antara negeri, tetapi Strategi tidak mengandungi rujukan kepada konteks di mana ia digunakan.

  4. Pelaksanaan Strategi boleh dihantar sebagai parameter kepada objek yang akan menggunakannya, contohnya Collection.sort() mengambil Comparator yang merupakan strategi. Sebaliknya, keadaan adalah sebahagian daripada konteks objek itu sendiri, dan dari masa ke masa, konteks objek beralih dari satu keadaan ke keadaan lain.

  5. Walaupun kedua-dua Strategi dan Negeri mengikut prinsip terbuka/tertutup, Strategi juga mengikut Prinsip Tanggungjawab Tunggal memandangkan setiap Strategi mengandungi algoritma individu, strategi yang berbeza adalah bebas antara satu sama lain. Mengubah satu strategi tidak memerlukan perubahan strategi lain.

  6. Satu lagi perbezaan teoritis antara corak Strategi dan State ialah pencipta mentakrifkan bahagian "Bagaimana" objek, cth. objek isih "Bagaimana" mengisih data, sebaliknya corak Negeri mentakrifkan bahagian "apa" dan "bila" daripada objek, contohnya apa yang objek boleh lakukan apabila ia berada dalam keadaan tertentu.

  7. Susunan peralihan keadaan ditakrifkan dengan baik dalam corak Negeri; tiada keperluan sedemikian untuk corak Strategi. Pelanggan bebas memilih mana-mana pelaksanaan Strategi pilihannya.

  8. Beberapa contoh biasa corak Strategi ialah pengkapsulan algoritma, seperti algoritma pengisihan, algoritma penyulitan atau algoritma pemampatan. Jika anda melihat bahawa kod anda mesti menggunakan pelbagai jenis algoritma berkaitan, anda harus mempertimbangkan untuk menggunakan corak Strategi. Sebaliknya, mengiktiraf penggunaan corak Negeri agak mudah, jika anda perlu mengawal keadaan dan peralihan antara keadaan tanpa banyak pernyataan bersyarat bersarang, corak Negeri ialah corak yang sesuai untuk digunakan.

  9. Yang terakhir tetapi satu daripada perbezaan yang paling penting antara corak State dan Strategi ialah perubahan kepada Strategi dilakukan oleh Klien, manakala perubahan kepada State boleh dilakukan oleh konteks atau keadaan objek itu sendiri.

Ini semua tentang perbezaan antara corak Negeri dan Strategi di Jawa . Seperti yang saya katakan, kedua-duanya kelihatan serupa dalam kelas dan rajah UML mereka, kedua-duanya menyediakan prinsip terbuka/tertutup dan kelakuan merangkum. Gunakan corak Strategi untuk merangkum algoritma atau strategi yang terdedah kepada konteks semasa masa jalan, mungkin sebagai parameter atau objek komposit, dan gunakan corak State untuk mengawal peralihan keadaan dalam Java. Asal di sini
Komen
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION