访问者模式

访问者模式
这个模式网上有很多文章其实很多的文章都容易让人混乱。尤其是在被访问者上添加对象,更有甚者是添加ObjectStructure
首先我说明下我对访问模式的理解
看代码会很容易理解
1、访问者接口

public interface Visitor {
void visit(Home myhome);
}

很简单的方法 只提供一个访问Home的方法

2、访问者接口A的实现

public class BeijingVisitor implements Visitor{

@Override
public void visit(Home myhome) {
System.out.println("I come from beijing");
}

}

3、访问者接口B的实现

public class ShanghaiVisitor implements Visitor{

@Override
public void visit(Home myhome) {
System.out.println("I come from shanghai");
}

}

4、被访问者

public void accept(Visitor visitor) {
visitor.visit(this);
}

作为主人当然欢迎任何人来访

5、调用类

public class Main {
public static void main(String[] args) {
Visitor beijingVisitor = new BeijingVisitor();
Visitor shanghaiVisitor = new ShanghaiVisitor();
Home myhome =new Home();
myhome.accept(beijingVisitor);
myhome.accept(shanghaiVisitor);
}

}


这样输入为
I come from beijing
I come from shanghai
如果有天津来的客人 可以再实现一个tianjingVisitor
这样没有修改以前的任何接口实现

但是有个问题就是如果我的房子变化2套,这个时候就需要把被访问者变化为接口。但是有个问题是北京来的访问者访问第1套房子跟访问第2套房子是业务方法都只有1个,虽然这个修改可以在被访问者的accept方法中添加。

不过最后我还是认为访问者模式[color=red]应该被用于访问者经常变化(如果添加新需求)而且被访问者相对来说相当固定的场景。[/color]
最后这个只是一家之言欢迎讨论
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值