科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件visitor模式概念——visitor模式进一步

visitor模式概念——visitor模式进一步

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

一,访问者模式的角色:抽象访问者:声明一个或者多个访问操作,形成所有的具体元素都要实现的接口具体访问者:实现抽象访问者所声明的接口

作者:中国IT实验室 来源:中国IT实验室 2007年8月26日

关键字:

  • 评论
  • 分享微博
  • 分享邮件
二:解决
要求能访问到每个类的对应的方法。我们第一反应应该是这样的。


 1  Iterator ie  =  list.iterator();
 2   while (ie.hasNext())  {
 3     Object obj  =  ie.next();
 4       if  (obj  instanceof  PA)  {
 5         ((PA)obj).runPA();
 6      } else   if (obj  instanceof  PB)  {
 7         ((PB)obj).runPB();
 8      } else   if (obj  instanceof  PC)  {
 9         ((PC)obj).runPC();
10      } else   if (obj  instanceof  PD)  {
11         ((PD)obj).runPD();
12      } else   if (obj  instanceof  PE)  {
13         ((PE)obj).runPE();
14     } 
15 } 

三:新问题及分析解决
当数目变多的时候,维护if else是个费力气的事情:
仔细分析if,else做的工作,首先判断类型,然後根据类型执行相应的函数
如何才能解决这两个问题呢?首先想到的是java的多态,多态就是根据参数执行相应的内容,
能很容易的解决第二个问题,我们可以写这样一个类:


 1   public   class  visitor  {
 2       public   void  run(PA pa)  {
 3         pa.runPA();
 4     } 
 5       public   void  run(PB pb)  {
 6         pb.runPB();
 7     } 
 8       public   void  run(PC pc)  {
 9         pc.runPC();
10     } 
11       public   void  run(PD pd)  {
12         pd.runPD();
13     } 
14       public   void  run(PE pe)  {
15         pe.runPE();
16     } 
17 } 

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章