java设计模式—访问者模式
一.概述
访问者模式是指不同的访问者调用同一个对象,根据访问者的身份返回不同的信息。
二.应用场景
1.权限控制
2.拦截器
三.模式示例:
我们以买家和卖家在访问同一个订单时,返回不同的信息为例具体讲解访问者模式的实现
1.创建订单访问接口
public interface IOrderViewer {
public void visit(BuyerInfo buyerInfo);
public void visit(SellerInfo keyboard);
}
2.创建订单信息接口
public interface OrderInfo {
public void accept(IOrderViewer orderVisitor);
}
3.创建订单访问具体实现类
public class OrderViewerImpl implements IOrderViewer{
@Override
public void visit(BuyerInfo buyerInfo) {
System.out.println("这是订单中的买家信息");
}
@Override
public void visit(SellerInfo keyboard) {
System.out.println("这是订单中的卖家信息");
}
}
4.创建买家访问者类
public class BuyerInfo implements OrderInfo {
@Override
public void accept(IOrderViewer orderVisitor) {
orderVisitor.visit(this);
}
}
5.创建卖家访问者类
public class SellerInfo implements OrderInfo {
@Override
public void accept(IOrderViewer orderVisitor) {
orderVisitor.visit(this);
}
}
6.模式调用
public class Test {
public static void main(String[] args) {
BuyerInfo buyer = new BuyerInfo();
buyer.accept(new OrderViewerImpl());
SellerInfo seller = new SellerInfo();
seller.accept(new OrderViewerImpl());
}
}