本文主要是介绍Android的设计模式-访问者模式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
前言
Android的设计模式系列文章介绍,欢迎关注,持续更新中:
Android的设计模式-设计模式的六大原则
创建型模式:
Android的设计模式-单例模式
Android的设计模式-建造者模式
Android的设计模式-工厂方法模式
Android的设计模式-简单工厂模式
Android的设计模式-抽象工厂模式
Android的设计模式-原型模式
行为型模式:
Android的设计模式-策略模式
Android的设计模式-状态模式
Android的设计模式-责任链模式
Android的设计模式-观察者模式
Android的设计模式-模板方法模式
Android的设计模式-迭代器模式
Android的设计模式-备忘录模式
Android的设计模式-访问者模式
1.定义
封装某些作用于某种数据结构中各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作。
2.介绍
- 访问者模式属于行为型模式。
- 访问者模式是一种将数据结构和数据操作分离的设计模式。
- 访问者模式比较复杂,而且实际使用的地方并不多。
- 访问者模式适用于数据结构稳定的元素操作上,一旦数据结构易变,则不适用。
3.UML类图
角色说明:
- 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)
这篇关于Android的设计模式-访问者模式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!