mod pelawat


Dalam Corak Pelawat, kami menggunakan kelas pelawat, yang mengubah algoritma pelaksanaan kelas elemen. Dengan cara ini, algoritma pelaksanaan elemen boleh berubah apabila pelawat berubah. Corak reka bentuk jenis ini ialah corak tingkah laku. Mengikut skema, objek elemen telah menerima objek pelawat supaya objek pelawat boleh mengendalikan operasi pada objek elemen.

Pengenalan

Niat: Terutamanya memisahkan struktur data daripada operasi data.

Terutamanya menyelesaikan: Struktur data yang stabil dan isu gandingan operasi yang tidak menentu.

Bila hendak digunakan: Anda perlu melakukan banyak operasi berbeza dan tidak berkaitan pada objek dalam struktur objek, dan anda perlu mengelak daripada membiarkan operasi ini "mencemarkan" kelas objek ini. Gunakan akses Corak Orator merangkumnya ke dalam kelas.

Cara menyelesaikan: Tambahkan antara muka pada kelas yang dilawati untuk menyediakan antara muka luaran untuk menerima pelawat.

Kod utama: Terdapat kaedah dalam kelas pangkalan data yang menerima pelawat dan menghantar rujukannya sendiri kepada pelawat.

Contoh permohonan: Anda adalah tetamu di rumah rakan, anda adalah pelawat, rakan menerima kunjungan anda, anda lulus penerangan rakan, dan kemudian membuat penilaian terhadap penerangan rakan , ini ialah mod Pelawat.

Kelebihan: 1. 2. Kebolehskalaan yang sangat baik. 3. Fleksibiliti.

Kelemahan: 1. Elemen khusus mendedahkan butiran kepada pelawat, yang melanggar Prinsip Dimit. 2. Sukar untuk mengubah elemen tertentu. 3. Ia melanggar prinsip penyongsangan kebergantungan dan bergantung pada kelas konkrit dan bukannya abstraksi.

Senario penggunaan: 1 Kelas yang sepadan dengan objek dalam struktur objek jarang berubah, tetapi selalunya perlu untuk mentakrifkan operasi baharu pada struktur objek ini. 2. Banyak operasi yang berbeza dan tidak berkaitan perlu dilakukan pada objek dalam struktur objek, dan anda perlu mengelak daripada membiarkan operasi ini "mencemarkan" kelas objek ini, dan anda tidak mahu mengubah suai kelas ini apabila menambah operasi baharu.

Nota: Pelawat boleh menyatukan fungsi dan membuat laporan, UI, pemintas dan penapis.

Melaksanakan

Kami akan mencipta antara muka ComputerPart yang mentakrifkan operasi yang diterima. Papan Kekunci, Tetikus, Monitor dan Komputer ialah kelas entiti yang melaksanakan antara muka ComputerPart. Kami akan mentakrifkan antara muka lain ComputerPartVisitor yang mentakrifkan operasi kelas pelawat. Komputer menggunakan pelawat entiti untuk melakukan tindakan yang sepadan.

VisitorPatternDemo, kelas demo kami menggunakan kelas Komputer, ComputerPartVisitor untuk menunjukkan penggunaan corak pelawat.

visitor_pattern_uml_diagram.jpg

Langkah 1

Tentukan antara muka yang mewakili elemen.

ComputerPart.java

public interface class ComputerPart {
   public void accept(ComputerPartVisitor computerPartVisitor);
}

Langkah 2

Buat kelas entiti yang memanjangkan kelas di atas.

Papan Kekunci.java

public class Keyboard  implements ComputerPart {

   @Override
   public void accept(ComputerPartVisitor computerPartVisitor) {
      computerPartVisitor.visit(this);
   }
}

Monitor.java

public class Monitor  implements ComputerPart {

   @Override
   public void accept(ComputerPartVisitor computerPartVisitor) {
      computerPartVisitor.visit(this);
   }
}

Mouse.java

rreee

Computer.java

public class Mouse  implements ComputerPart {

   @Override
   public void accept(ComputerPartVisitor computerPartVisitor) {
      computerPartVisitor.visit(this);
   }
}

Langkah 3

Tentukan antara muka yang mewakili pelawat.

ComputerPartVisitor.java

public class Computer implements ComputerPart {
	
   ComputerPart[] parts;

   public Computer(){
      parts = new ComputerPart[] {new Mouse(), new Keyboard(), new Monitor()};		
   } 


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

Langkah 4

Buat pelawat entiti yang melaksanakan kelas di atas.

ComputerPartDisplayVisitor.java

public interface ComputerPartVisitor {
	public void visit(Computer computer);
	public void visit(Mouse mouse);
	public void visit(Keyboard keyboard);
	public void visit(Monitor monitor);
}

Langkah 5

Gunakan ComputerPartDisplayVisitor untuk memaparkan komponen <Komputer .

VisitorPatternDemo.java

public class ComputerPartDisplayVisitor implements ComputerPartVisitor {

   @Override
   public void visit(Computer computer) {
      System.out.println("Displaying Computer.");
   }

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

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

   @Override
   public void visit(Monitor monitor) {
      System.out.println("Displaying Monitor.");
   }
}

Langkah 6

Sahkan output.

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

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