Latest web development tutorials

Pola pengunjung

Dalam pola pengunjung (Pola Pengunjung), kita menggunakan kelas pengunjung, mengubah kelas elemen algoritma eksekusi. Dengan cara ini, dengan pelaksanaan algoritma dapat menjadi elemen pengunjung berubah. Jenis pola desain milik pola perilaku. Menurut pola, objek elemen telah menerima target pengunjung, sehingga pengunjung dapat menangani objek operasi objek elemen.

pengenalan

Maksud: Struktur utama dari data dan data pemisahan manipulasi.

Terutama untuk mengatasi: struktur data yang stabil dan variabel masalah kopling operasi.

Kapan menggunakan: kebutuhan untuk struktur target objek dalam banyak tindakan yang berbeda dan tidak berhubungan, tetapi tindakan ini perlu untuk menghindari "pencemaran" dari kelas benda-benda, penggunaan pengunjung ke paket ini ke kelas.

Cara untuk memperbaiki: kelas diakses dalam ditambah penerimaan dari pengunjung asing untuk menyediakan antarmuka.

Kode kunci: kelas data base yang memiliki metode untuk menerima pengunjung, dirinya referensi untuk pengunjung yang masuk.

Aplikasi Contoh: Anda adalah seorang tamu di rumah teman, Anda adalah pengunjung, teman menerima kunjungan Anda melalui deskripsi teman Anda, maka deskripsi teman untuk membuat penilaian, yang merupakan pola pengunjung.

Keuntungan: 1, sejalan dengan prinsip tanggung jawab tunggal.2, baik skalabilitas. 3, fleksibilitas.

Kekurangan: 1, elemen spesifik pengunjung mengumumkan rincian pelanggaran prinsip Demeter.2, unsur-unsur tertentu dari perubahan yang lebih sulit. 3, melanggar prinsip Ketergantungan Inversi, bergantung pada kelas tertentu yang tidak bergantung pada abstraksi.

Penggunaan skenario: 1, objek sesuai dengan struktur kelas objek jarang perubahan, tetapi sering perlu mendefinisikan operasi baru pada struktur objek ini.2, kebutuhan untuk struktur target objek dalam banyak tindakan yang berbeda dan tidak berhubungan, tetapi tindakan ini perlu untuk menghindari "pencemaran" dari kelas benda-benda, kita tidak ingin mengubah kelas ini ketika Anda menambahkan operasi baru.

Catatan: Pengunjung dapat disatukan fungsi, Anda dapat melakukan laporan, UI, mencegat dan filter.

realisasi

Kami akan membuat definisi diterima antarmuka operasiComputerPart.Keyboard, Mouse, Memantau danKomputermencapai antarmukaComputerPartkelas entitas. Kami akan menentukanComputerPartVisitorantarmukalain,yang mendefinisikan jenis operasi untuk pengunjung.Komputermenggunakan pengunjung Entity untuk mengambil tindakan yang tepat.

VisitorPatternDemo,kami menunjukkan penggunaan kelasKomputer,kelasComputerPartVisitoruntuk menunjukkan penggunaan pola pengunjung.

pola pengunjung diagram UML

Langkah 1

Mendefinisikan antarmuka yang mewakili elemen.

ComputerPart.java

kelas antarmuka publik ComputerPart {
   public void menerima (ComputerPartVisitor computerPartVisitor);
}

Langkah 2

Buat memperluas kelas entitas di atas kelas.

Keyboard.java

public class Keyboard mengimplementasikan ComputerPart {

   @ Override
   public void menerima (ComputerPartVisitor computerPartVisitor) {
      computerPartVisitor.visit (ini);
   }
}

Monitor.java

public class Memantau mengimplementasikan ComputerPart {

   @ Override
   public void menerima (ComputerPartVisitor computerPartVisitor) {
      computerPartVisitor.visit (ini);
   }
}

Mouse.java

Tikus public class mengimplementasikan ComputerPart {

   @ Override
   public void menerima (ComputerPartVisitor computerPartVisitor) {
      computerPartVisitor.visit (ini);
   }
}

Computer.java

public class Komputer mengimplementasikan ComputerPart {
	
   ComputerPart [] bagian;

   publik Komputer () {
      bagian = ComputerPart baru [] {baru Mouse (), Keyboard baru (), baru Monitor ()};		
   } 


   @ Override
   public void menerima (ComputerPartVisitor computerPartVisitor) {
      for (int i = 0; i <parts.length; i ++) {
         bagian [i] .Terima (computerPartVisitor);
      }
      computerPartVisitor.visit (ini);
   }
}

Langkah 3

Mendefinisikan antarmuka representasi pengunjung.

ComputerPartVisitor.java

antarmuka publik ComputerPartVisitor {
	public void kunjungan (komputer Komputer);
	public void kunjungan (mouse mouse);
	public void kunjungan (keyboard Keyboard);
	public void kunjungan (Monitor Monitor);
}

Langkah 4

Pengunjung entitas dibuat untuk mencapai kelas yang disebutkan di atas.

ComputerPartDisplayVisitor.java

public class ComputerPartDisplayVisitor mengimplementasikan ComputerPartVisitor {

   @ Override
   public void kunjungan (komputer Komputer) {
      System.out.println ( "Menampilkan Computer.");
   }

   @ Override
   public void kunjungan (mouse mouse) {
      System.out.println ( "Menampilkan Mouse.");
   }

   @ Override
   public void kunjungan (keyboard Keyboard) {
      System.out.println ( "Menampilkan Keyboard.");
   }

   @ Override
   public void kunjungan (Monitor Monitor) {
      System.out.println ( "Menampilkan Monitor.");
   }
}

Langkah 5

GunakanComputerPartDisplayVisitoruntuk menunjukkan bagian dariKomputer tersebut.

VisitorPatternDemo.java

public class VisitorPatternDemo {
   public static void main (String [] args) {

      ComputerPart komputer = new Computer ();
      computer.accept (ComputerPartDisplayVisitor baru ());
   }
}

Langkah 6

Verifikasi output.

Menampilkan Mouse.
Menampilkan Keyboard.
Menampilkan Monitor.
Menampilkan Komputer.