Android的设计模式-访问者模式

前言

Android的设计模式系列文章介绍,欢迎关注,持续更新中:

Android的设计模式-设计模式的六大原则
创建型模式:
Android的设计模式-单例模式
Android的设计模式-建造者模式
Android的设计模式-工厂方法模式
Android的设计模式-简单工厂模式
Android的设计模式-抽象工厂模式
Android的设计模式-原型模式
行为型模式:
Android的设计模式-策略模式
Android的设计模式-状态模式
Android的设计模式-责任链模式
Android的设计模式-观察者模式
Android的设计模式-模板方法模式
Android的设计模式-迭代器模式
Android的设计模式-备忘录模式
Android的设计模式-访问者模式

1.定义

封装某些作用于某种数据结构中各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作。

2.介绍
  • 访问者模式属于行为型模式。
  • 访问者模式是一种将数据结构和数据操作分离的设计模式。
  • 访问者模式比较复杂,而且实际使用的地方并不多。
  • 访问者模式适用于数据结构稳定的元素操作上,一旦数据结构易变,则不适用。
3.UML类图

访问者模式UML类图.jpg

角色说明:
  • Visitor(抽象访问者):接口或者抽象类,为每一个元素(Element)声明一个访问的方法。
  • ConcreteVisitor(具体访问者):实现抽象访问者中的方法,即对每一个元素都有其具体的访问行为。
  • Element(抽象元素):接口或者抽象类,定义一个accept方法,能够接受访问者(Visitor)的访问。
  • ConcreteElementA、ConcreteElementB(具体元素):实现抽象元素中的accept方法,通常是调用访问者提供的访问该元素的方法。
  • Client(客户端类):即要使用访问者模式的地方。
4.实现

以我们平时听歌看视频为例,音乐视频网站都会提供在线播放和下载的功能,当我们有空的时候往往就选择了在线播放,比较忙的时候就选择先下载下来,有空的时候再去观看。其中,音乐视频网站就是具体的要访问的元素,闲人和忙人就是具体的访问者,闲人和忙人的访问行为是不一样的。

4.1 创建抽象元素

定义一个抽象的受访问方法以及其他公共的方法:

    public abstract class Web {
   
        public String name;

        public Web(String name) {
   
            this.name = name;
        }

        //定义一个抽象的受访问方法
        public abstract void accept(Visitor visitor);

        //下载资源
        public abstract void download();

        public String getName() {
   
            return name;
        }
    }
4.2 创建具体元素

实现抽象元素中的accept()方法,通常是调用访问者提供的访问该元素的方法。下面创建音乐类以及视频类,他们都有一个download()方法,但是其具体下载的内容是不一样的,同时他们也存在各自独有的方法playMusic()playVideo()

    public class Music extends Web {
   //音乐类,继承自Web类

        public Music(String name) {
   
            super(name)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值