设计模式(十三)----访问者模式

目录

1.Visitor模式

1.1 作用

1.2 示例程序

1.2.1 示例程序类图

1.2.2 Visitor抽象类

1.2.3 Element接口

1.2.4 文件及文件夹类

1.2.5 ListVisitor类

1.2.6 Main类

1.2.7 示例程序时序图

1.3 Visitor模式中的角色

1.4 其他特点


1.Visitor模式

1.1 作用

   该模式是为了将数据结构与处理分离开来, 编写一个表示"访问者"的类来访问数据结构中的元素, 并把对各元素的处理交给访问者类, 当需要增加对数据结构新的处理方式时, 只需要编写新的访问者, 然后让数据结构可以接受访问者的访问即可.

1.2 示例程序

   示例程序使用Composite模式中的那个文件和文件夹的例子作为访问者要访问的数据结构.

1.2.1 示例程序类图

1.2.2 Visitor抽象类

//表示访问者的抽象类
public abstract class Visitor {
    public abstract void visit(File file);//访问文件
    public abstract void visit(Director director);//访问文件夹
}

1.2.3 Element接口

//接收访问者访问的接口
public interface Element {
    public abstract void accept(Visitor v);//表示访问者v在当问当前对象
}

1.2.4 文件及文件夹类

//文件和文件夹的父类,目录条目抽象类
public abstract class Entry implements Element{
    public abstract String getName();//名字
    public abstract int getSize();//大小
    public abstract Entry add(Entry entry);//向文件夹内添加文件
    public abstract Iterator iterator();//想访问者提供一个获取迭代器的方式

    @Override
    public String toString() {
        return getName() + "(" + getSize() + ")";
    }
}
//文件类
public class File extends Entry{
    private String name;
    public int size;

    public File(String name, int size) {
        this.name = name;
        this.size = size;
    }

    @Override
    public String 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值