Artikel ini menjelaskan fungsi switching mode pengeditan dokumen yang diimplementasikan oleh Java berdasarkan mode status. Bagikan untuk referensi Anda, sebagai berikut:
Definisi pola
Mode Negara: Ketika keadaan batin suatu objek berubah, ia memungkinkan mengubah perilakunya, dan objek sepertinya telah mengubah kelasnya.
Contoh mode kedua
1 analisis pola
Kami menggunakan kasus mode pengeditan dokumen untuk beralih untuk menggambarkan mode ini.
2 mode statis diagram kelas statis
3 contoh kode
3.1 Buat iskala antarmuka negara bagian
Paket com.demo.state; import com.demo.context.context;/** * * antarmuka status * * @author * */antarmuka publik ISTATE {/** * Transisi negara bagian * * @param konteks * @param Mode */public void convertState (konteks konteks, mode int); / ** * Simpan metode * * @param konteks */ public void save (konteks konteks); / ** * Modifikasi metode * * @param Context */ public void Modify (konteks konteks); / ** * metode baru * * @param konteks */ public void add (konteks konteks); / ** * Lihat metode * * @param konteks */ tampilan public void (konteks konteks);}3.2 Buat konteks konteks
Paket com.demo.context; import com.demo.state.istate;/** * Lingkungan konteks * * @author * */konteks kelas publik {// mode pratinjau public static final int preview_mode = 0; // Edit Mode Public Static Final Int Edit_Mode = 1; // Negara Bagian Istate Privat saat ini; // ubah status public void changestate (state iState) {this.state = state; } / ** * Jalankan * @param Mode * / public void dowork (mode int) {System.out.println ("---------------------------------"); this.state.convertState (ini, mode); this.state.add (ini); this.state.save (ini); this.state.modify (ini); this.state.view (ini); System.out.println("--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------3.3 Edit Status 1 EditState
Paket com.demo.state; import com.demo.context.context;/*** Edit Mode State** @Author**/Public Class EditState mengimplementasikan iState {/*** Transisi status*/public void convertState (konteks, mode int) {if (== Context.preview_mode) {Contexte) {Contextate) (Contextate. }} / *** Baru dalam mode edit* / public void add (konteks konteks) {System.out.println ("Mode Edit [add] ..."); } / *** Edit Mode Modifikasi* / public void memodifikasi (konteks konteks) {System.out.println ("Mode Edit [Modifikasi] ..."); } / *** Edit mode menyimpan* / public void save (konteks konteks) {System.out.println ("Edit Mode [Saving] ..."); } / *** Edit mode tampilan* / tampilan public void (konteks konteks) {System.out.println ("Edit Mode [Lihat] ..."); }}3.4 PreviewState
Paket com.demo.state; import com.demo.context.context;/*** Status mode pratinjau** @author**/kelas publik PreviewState mengimplementasikan iState {/*** Transisi status*/public void convertState (konteks, mode int) {if (Mode == Context.edit_edit_mode) {context. }} / *** Baru dalam mode pratinjau* / public void add (konteks konteks) {System.out.println ("Mode pratinjau tidak mendukung fungsi [baru]!"); } / *** Modifikasi mode pratinjau* / public void memodifikasi (konteks konteks) {System.out.println ("Mode Pratinjau tidak mendukung fungsi [Modifikasi]!"); } / *** Mode pratinjau Simpan* / public void save (konteks konteks) {System.out.println ("Mode pratinjau tidak mendukung fungsi [menyimpan]!"); } / *** Tampilan mode pratinjau* / tampilan public void (konteks konteks) {System.out.println ("Mode Pratinjau [Lihat] ..."); }}3.5 Klien Pengujian Klien
package com.demo;import java.util.Random;import com.demo.context.Context;import com.demo.state.EditState;/** * Client application* * @author * */public class Client { /** * @param args */ public static void main(String[] args) { Context context = new Context(); context.changestate (editState baru ()); Acak acak = acak baru (); untuk (int i = 0; i <5; i ++) {int r = random.nextInt (2); System.out.println ("Mode Saat Ini:" + (R == 0? "Mode Pratinjau": (r == 1? "Mode Edit": ""))); context.dowork (r); }}}4 hasil berjalan
Mode Saat Ini: Mode Edit
-----------------------------------------------------------------------------------------------------------------------------
Mode Pengeditan [Baru] ...
Edit Mode [Simpan] ...
Mode Pengeditan [Modifikasi] ...
Edit Mode [Lihat] ...
-----------------------------------------------------------------------------------------------------------------------------
Mode Saat Ini: Mode Edit
-----------------------------------------------------------------------------------------------------------------------------
Mode Pengeditan [Baru] ...
Edit Mode [Simpan] ...
Mode Pengeditan [Modifikasi] ...
Edit Mode [Lihat] ...
-----------------------------------------------------------------------------------------------------------------------------
Mode Saat Ini: Mode Pratinjau
-----------------------------------------------------------------------------------------------------------------------------
Mode pratinjau tidak mendukung fungsi [baru]!
Mode pratinjau tidak mendukung fungsi [simpan]!
Mode pratinjau tidak mendukung fungsi [Modifikasi]!
Mode pratinjau [lihat] ...
-----------------------------------------------------------------------------------------------------------------------------
Mode Saat Ini: Mode Pratinjau
-----------------------------------------------------------------------------------------------------------------------------
Mode pratinjau tidak mendukung fungsi [baru]!
Mode pratinjau tidak mendukung fungsi [simpan]!
Mode pratinjau tidak mendukung fungsi [Modifikasi]!
Mode pratinjau [lihat] ...
-----------------------------------------------------------------------------------------------------------------------------
Mode Saat Ini: Mode Edit
-----------------------------------------------------------------------------------------------------------------------------
Mode Pengeditan [Baru] ...
Edit Mode [Simpan] ...
Mode Pengeditan [Modifikasi] ...
Edit Mode [Lihat] ...
-----------------------------------------------------------------------------------------------------------------------------
Tiga prinsip desain pola ini
1 prinsip "dekat-dekat"
2 prinsip tanggung jawab tunggal
Empat kesempatan penggunaan
1 Perilaku suatu objek diambil dari keadaannya, dan ia harus mengubah perilakunya sesuai dengan keadaannya pada saat operasinya.
2 Operasi berisi struktur multi-cabang yang sangat besar, dan cabang-cabang ini ditentukan oleh keadaan objek.
Diagram kelas lima negara bagian statis
Untuk lebih banyak konten terkait Java, pembaca yang tertarik dengan situs ini dapat melihat topik: "Pendahuluan dan Tutorial Lanjutan tentang Pemrograman Berorientasi Objek Java", "Tutorial tentang Struktur Data Java dan Algorithma", "Ringkasan Keterampilan Operasi Java Java", "Ringkasan Operasi Java File dan Keterampilan Operasi Direktori" dan Ringkasan Java Operasi Java "," Ringkasan Operasi Java Keterampilan Operasi Direktori "dan" Ringkasan Java Ringkasan JAVA "
Saya harap artikel ini akan membantu pemrograman Java semua orang.