设计模式学习笔记十二:访问者模式

访问者模式是一种对象行为型设计模式,用于在不修改对象结构的情况下为对象的元素添加新的操作。适用场景为对象结构稳定但行为需要频繁变化的情况。文章通过客户回访的场景模拟展示了访问者模式的应用,对比了访问者模式与策略模式的区别,并指出访问者模式在结构不变时易于扩展行为,但结构变化会带来较大调整。
摘要由CSDN通过智能技术生成

设计模式学习笔记十二:访问者模式

介绍

访问者(visitor)模式,属于对象行为型模式,它实现了结构与行为的解耦。
意图:表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。(本段摘自《GoF设计模式》 5.11)

适用场景

访问者模式适合对象的结构稳定,行为变动频繁的情况。反之,结构变动频繁的场景不适合使用次模式。在后面的实现中可以很容易的证实这一点,结构的变化会增加更多繁复的操作。在一个已经的接口中增加方法会导致在其所有的实现类中都进行一次实现实现,没人愿意这么做。

UML结构图:

可以先略过,回头再看。
Visitor

场景模拟

这里我以客户回访场景尝试解释访问者模式的应用:在公司Z中,会定期对他的客户进行回访。根据客户重要度的不同,人物、时间、地点也会不同。不管是否愿意承认,生活中到处充满着等级的划分不是么?
+ 普通客户:铜牌业务员A;时间:工作日;地点:电话连线。
+ 潜力优质客户:银牌业务员B;时间:沟通确定;地点:茶楼。
+ 优质客户:金牌业务员C;时间:沟通确定;地点:避暑山庄。

代码实现:

1.回访操作

package com.array7.visitor;

/**
 * 回访接口,即Element
 */
public interface IRevisit {
   
    void accpet(IWorkerVisitor visitor);
}

/**
 * 约定的业务员,即ConcreteElement
 */
public class Worker implements IRevisit {
   

    @Override
    public void accpet(IWorkerVisitor visitor) {
        visitor.visit(this);
    }
}

/**
 * 约定的回访时间,即ConcreteElement
 */
public class Time implements IRevisit {
   
    @Override
    public 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值