行为模式:访问者模式(visitor)解析例子

摘要:本文深入浅出的讲述了设计模式中的 模式属于行为型模式,其意图是表示一个作用于某对象结构中的各元素的操作。他使你可以在不改变个元素的类的前提下定义作用与这些元素的操作。考虑一个访问汽车各个部件的程序,该程序需要在汽车各个部件上执行某些操作,比如:获取名字等等,因此它可能需要定义许多操作已进行类型检查。这些操作大多要求对不同节点进行不同的处理,如果单纯使用 类,并在便利抽象语法树时将此对象传递给当前访问的元素。当一个元素接受该访问者时,该元素向访问者发送一个包含自身类信息的请求,该请求同时也将该元素本身作为一个参数,然后访问者将为该原色执行该操作,这一个操作以前是在该元素的类中的。使用Visitor适用性:
l 需要对一个对象结构中的对象进行很多不同的并且不相关的操作。而你想避免让这些操作污染这些对象的类,Visitor模式让每个应用仅仅包含需要用到的操作。
l 为该对象结构中的ConcreteElement操作,该操作的名字和特征标示了发送Visit         ConcreteVisitor:声明的操作,每个操作实现本算法的一部分,而该算法片断乃是对应于结构中对象的类。ConcreteVisitor         Element:操作,该操作以一个访问者为参数。
l  visitor; 
 
packagepublic Visitor{void    
 visit(Body body);void}
class  Visitor{protected;public       name    }public visit(Wheel wheel){out+wheel.getName()+
    void       System."Check Engine!"    }public visit(Body body){out);
 
.println(" Check Car!"    }具体的被访问者: visitor; implements    void       v.visit(
} visitor; implements    engine Engine();private = 
 Wheel[] new),"Front right" Wheel(new)};public accept(Visitor v){this       
.accept(v);for i=0;i<4;i++)wheels    }总结:访问者模式充分利用了面向对象语言中的多态模式。把同类对象的访问统一到一个类中,使得改变访问方式变得容易,增加一个被访问者的类也比较容易。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值