รูปแบบการออกแบบ - รูปแบบผู้เยี่ยมชม
ในรูปแบบผู้เยี่ยมชมเราใช้คลาสผู้เยี่ยมชมซึ่งเปลี่ยนอัลกอริทึมการดำเนินการของคลาสองค์ประกอบ ด้วยวิธีนี้อัลกอริทึมการดำเนินการขององค์ประกอบอาจแตกต่างกันไปและเมื่อผู้เยี่ยมชมแตกต่างกันไป รูปแบบนี้อยู่ในหมวดรูปแบบพฤติกรรม ตามรูปแบบวัตถุองค์ประกอบต้องยอมรับวัตถุผู้เยี่ยมชมเพื่อให้วัตถุผู้เยี่ยมชมจัดการการดำเนินการกับวัตถุองค์ประกอบ
การนำไปใช้
เรากำลังจะสร้างอินเทอร์เฟซComputerPartเพื่อกำหนดการยอมรับการทำงาน คีย์บอร์ด , เมาส์ , จอภาพและคอมพิวเตอร์ชั้นเรียนคอนกรีตดำเนินComputerPartอินเตอร์เฟซ เราจะกำหนดอินเตอร์เฟสComputerPartVisitorอื่นซึ่งจะกำหนดการดำเนินการของคลาสผู้เยี่ยมชม คอมพิวเตอร์ใช้ผู้เยี่ยมชมที่เป็นรูปธรรมเพื่อดำเนินการที่เกี่ยวข้อง
VisitorPatternDemoคลาสสาธิตของเราจะใช้คอมพิวเตอร์และคลาสComputerPartVisitorเพื่อสาธิตการใช้รูปแบบผู้เยี่ยมชม
ขั้นตอนที่ 1
กำหนดอินเทอร์เฟซเพื่อแสดงองค์ประกอบ
ComputerPart.java
public interface ComputerPart {
public void accept(ComputerPartVisitor computerPartVisitor);
}
ขั้นตอนที่ 2
สร้างชั้นเรียนที่เป็นรูปธรรมเพื่อขยายชั้นเรียนข้างต้น
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);
}
}
ขั้นตอนที่ 3
กำหนดอินเทอร์เฟซเพื่อแสดงถึงผู้เยี่ยมชม
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);
}
ขั้นตอนที่ 4
สร้างผู้เยี่ยมชมที่เป็นรูปธรรมโดยใช้ชั้นเรียนข้างต้น
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.");
}
}
ขั้นตอนที่ 5
ใช้ComputerPartDisplayVisitorเพื่อแสดงส่วนของคอมพิวเตอร์
VisitorPatternDemo.java
public class VisitorPatternDemo {
public static void main(String[] args) {
ComputerPart computer = new Computer();
computer.accept(new ComputerPartDisplayVisitor());
}
}
ขั้นตอนที่ 6
ตรวจสอบผลลัพธ์
Displaying Mouse.
Displaying Keyboard.
Displaying Monitor.
Displaying Computer.