我是靠谱客的博主 愤怒毛衣,最近开发中收集的这篇文章主要介绍设计模式学习笔记——Visitor模式(行为),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

需要解决的问题:
作用于某一个对象群时,对象本身不变化,对象可以通过与它交互的对象获取不同的行为。
具体事例:
当你去银行办理业务的时候,会发现银行内部开设了不同的窗口(普通业务、代办业务、基金保险等等),你可以根据实际的需要选择自己需要的窗口办理业务。比如:你去了普通窗口,工作人员会认为你就是来办理普通业务的;而你去了代办业务窗口,工作人员会认为你就是来办理代办业务的;否则你就失去错了窗口。
具体实施步骤:
1、定义一个对象群,此处容易误解,可以这样说:定义一个容纳所有业务需要的对象。
2、定义一个接口,处理对象群与固定对象的业务关系。
3、实现固定对象与对象群的对象交互,定义所有的业务实现。
代码模板:
对象群,即对象的所有业务需要。


public class Visitor {

public void process(AService service) {
System.out.println("A service");
}

public void process(BService service) {
System.out.println("B service");
}

public void process(CService service) {
System.out.println("C service");
}
}

对象群与固定对象的交互接口。

public interface Service {
public void doService(Visitor visitor);
}

固定对象业务实现。

public class AService implements Service {
public void doService(Visitor visitor) {
visitor.process(this);
}

}

public class BService implements Service{

public void doService(Visitor visitor) {
visitor.process(this);
}
}

public class CService implements Service {
public void doService(Visitor visitor) {
visitor.process(this);
}
}


测试代码:

public class Test {
public static void main(String[] args) {
Service a = new AService();
Service b = new BService();
Service c = new CService();

Visitor visitor = new Visitor();

a.doService(visitor);
b.doService(visitor);
c.doService(visitor);
}

}


执行结果:
A service
B service
C service

说明:
Visitor(访问者)模式,名字听起来像一个与自己无关的类,我只知道我来是想干什么,但是怎么干已经有人提前准备好了,这是从Visitor的角度分析。而从提供给Visitor服务的角度看,就像一个固定死死的东西,不管来的人是谁,我只管给它提供一种统一的服务。
就是一个观光客的感觉。
计划好了去游玩什么地方,而这些地方已经时刻准备着为你的到来服务。当然你到了华山,它也不可能给你提供黄山的感觉,你只能欣赏华山了。玩笑而已。
希望不吝指教,谢谢。

最后

以上就是愤怒毛衣为你收集整理的设计模式学习笔记——Visitor模式(行为)的全部内容,希望文章能够帮你解决设计模式学习笔记——Visitor模式(行为)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(58)

评论列表共有 0 条评论

立即
投稿
返回
顶部