从Visitor中看回调

Visitor的设计理念,就是将责任归结到一个类里,如果将来需求有变更,可以通过继承一个类,而不用修改一个固定元素的代码,添加方法,这就是一个习惯,任何人都只希望添加新类,而不愿意去修改旧代码的方法。

 

Visitor中,固定的元素就是Element(比如是XML中的Element),XML的解析策略对于不同应用可能是不同的,比如A应用希望遇到>将其转换成>,B应用希望将>转换为GT,都有可能,如果我们在Element添加方法,那么Element的解析就变的很脆弱,需求一变更,就需要动Element的源代码。但其实真正需要是归结于外部,而不是Element的责任,所以,要把责任推到一个Visitor上,又想把责任推到Visitor上,又想解析这个Element,就应该让Visitor有一个Element的引用,那就是回调了,Element接受一个Visitor,在这个方法里再调用VisitorvisitElement)方法,OK,以后要改,只需要变更Vistor实例,实现具体的Visit方法,就可以搞定,事实上用过SAX的,对这个模式是熟悉的,因为他的XML遍历就是基于Visitor模式的。

 

那么 在这我想总结回调的两点作用。

 

1.       如上所述,将责任推出

2.       AJAX回调一样,实现一种(分布式)交互机制

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值