行为模式-访问者模式

访问者模式(Visitor) 表示一个作用于某对象结构中的各元素的操作.它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作.

可以这么理解,访问者模式实际上是分离了容器结构中的元素和对这些元素进行操作的行为,然而容器对象就象是个大染缸,本来有各种鲜明类型的对象一旦放入后,再取出时,这些类型就消失了,这时我们就可以使用访问者模式来加以处理.

    public interface IVisitor

    {

        void Process(ScheduleElement element);

    }   // interface IVisitor

 

    public interface IElement

    {

        void Accept(IVisitor visit);

    }   // interface IElement

 

    public class ScheduleVisitor : IVisitor

    {

        public void Process(ScheduleElement element)

        {

        }

    }   // ScheduleVisitor

 

    public class ScheduleElement : IElement

    {

        private IVisitor m_Visit;

 

        public void Accept(IVisitor visit)

        {

            m_Visit = visit;

        }

 

        public void Opterator()

        {

            m_Visit.Process(this);

        }

    }   // class ScheduleElement

 

    public class Client

    {

        public void Process()

        {

            ScheduleElement ele = new ScheduleElement();

            ScheduleVisitor vis = new ScheduleVisitor();

            ele.Accept(vis);

            ele.Opterator();

        }

}   // class Client

以下情况 考虑使用访问者模式:

当一个对象结构包含很多类对象,它们有不同的接口,而你想对这些对象实施一些依赖于其具体类的操作.

需要对一个对象结构中的对象进行很多不同的并且不相关的操作,而你想避免让这些操作污染这些对象的类.访问者使得你可以将相关的操作集中起来定义在一个类中.当该对象结构被很多应用共享时,用访问者模式让每个应用仅包含需要用到的操作.

定义对象结构的类很少改变,但经常需要在此结构上定义新的操作.改变对象结构类需要重定义对所有访问者的接口,这可能需要很大的代价.如果对象结构类经常改变,那么可能还是在这些类中定义这些操作较好.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值