Mẫu thiết kế - Mẫu khách truy cập

Trong kiểu khách truy cập, chúng tôi sử dụng lớp khách truy cập để thay đổi thuật toán thực thi của một lớp phần tử. Bằng cách này, thuật toán thực thi của phần tử có thể thay đổi khi khách truy cập thay đổi. Mẫu này nằm trong danh mục mẫu hành vi. Theo mẫu, đối tượng phần tử phải chấp nhận đối tượng khách truy cập để đối tượng khách truy cập xử lý hoạt động trên đối tượng phần tử.

Thực hiện

Chúng tôi sẽ tạo một giao diện ComputerPart xác định lựa chọn chấp nhận. Bàn phím , Chuột , Màn hìnhMáy tính là các lớp cụ thể triển khai giao diện ComputerPart . Chúng tôi sẽ định nghĩa một giao diện ComputerPartVisitor khác sẽ xác định các hoạt động của lớp khách truy cập. Máy tính sử dụng khách truy cập cụ thể để thực hiện hành động tương ứng.

VisitorPatternDemo , lớp demo của chúng tôi, sẽ sử dụng máy tínhComputerPartVisitor lớp học để chứng minh sử dụng các mô hình khách truy cập.

Bước 1

Xác định một giao diện để biểu diễn phần tử.

ComputerPart.java

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

Bước 2

Tạo các lớp cụ thể mở rộng lớp trên.

Keyboard.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

public class Mouse implements ComputerPart {

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

Computer.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);
   }
}

Bước 3

Xác định một giao diện để đại diện cho khách truy cập.

ComputerPartVisitor.java

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

Bước 4

Tạo khách truy cập cụ thể thực hiện lớp trên.

ComputerPartDisplayVisitor.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.");
   }
}

Bước 5

Sử dụng ComputerPartDisplayVisitor để hiển thị các bộ phận của Máy tính .

VisitorPatternDemo.java

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

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

Bước 6

Xác minh kết quả đầu ra.

Displaying Mouse.
Displaying Keyboard.
Displaying Monitor.
Displaying Computer.