当前位置: 首页 > news >正文

大连网站建设lccm遵义本地网站

大连网站建设lccm,遵义本地网站,云南网站设计多少钱,网页微信不能登录是怎么回事1)意图 表示一个作用于某对象结构中的各元素的操作。它允许在不改变各元素的类的前提下定义用于这些元素的新操作。 2)结构 访问者模式的结构图如图 7-48 所示。 其中: Visitor(访问者) 为该对象结构中ConcreteElement 的每一个类声明一个 Vsit 操作。该操作的名字和特征标识…

1)意图

表示一个作用于某对象结构中的各元素的操作。它允许在不改变各元素的类的前提下定义用于这些元素的新操作。

2)结构

访问者模式的结构图如图 7-48 所示。
在这里插入图片描述
其中:

  • Visitor(访问者) 为该对象结构中ConcreteElement 的每一个类声明一个 Vsit 操作。该操作的名字和特征标识了发送 Visit 请求给该访问者的那个类,这使得访问者可以确定正被访问元素的具体的类。这样访问者就可以通过该元素的特定接口直接访问它。

  • ConcreteVisitor(具体访问者) 实现每个有 isitor 声明的操作,每个操作实现本算法的一部分,而该算法片段乃是对应于结构中对象的类。ConcreteVsitor 为该算法提供了上下文并存储它的局部状态。这一状态常常在遍历该结构的过程中累积结果。

  • Element(元素) 定义以一个访问者为参数的Accept 操作。

  • ConcreteElement(具体元素) 实现以一个访问者为参数的Accept 操作。

  • ObiectStucture(对象结构) 能枚举它的元素:可以提供一个高层的接口以允许该访问者访问它的元素;可以是一个组合或者一个集合,如一个列表或一个无序集合。

3)适用性

Visitor 模式适用于:

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

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

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

4 应用举例

代码审查系统

假设我们有一个代码审查系统,需要检查代码中的变量和函数。我们可以使用访问者模式来实现,其中变量和函数是具体元素,而检查规则是访问者。

Java代码示例:

// 元素接口
interface CodeElement {void accept(CodeVisitor visitor);
}// 具体元素:变量
class Variable implements CodeElement {private String name;public Variable(String name) {this.name = name;}@Overridepublic void accept(CodeVisitor visitor) {visitor.visit(this);}public String getName() {return name;}
}// 具体元素:函数
class Function implements CodeElement {private String name;public Function(String name) {this.name = name;}@Overridepublic void accept(CodeVisitor visitor) {visitor.visit(this);}public String getName() {return name;}
}// 访问者接口
interface CodeVisitor {void visit(Variable element);void visit(Function element);
}// 具体访问者:检查规则
class CodeChecker implements CodeVisitor {@Overridepublic void visit(Variable element) {System.out.println("检查变量 " + element.getName() + " 是否已定义。");}@Overridepublic void visit(Function element) {System.out.println("检查函数 " + element.getName() + " 是否有返回值。");}
}// 对象结构:代码文件
class CodeFile {private List<CodeElement> elements = new ArrayList<>();public void addElement(CodeElement element) {elements.add(element);}public void accept(CodeVisitor visitor) {for (CodeElement element : elements) {element.accept(visitor);}}
}public class VisitorPatternDemo {public static void main(String[] args) {CodeFile codeFile = new CodeFile();codeFile.addElement(new Variable("x"));codeFile.addElement(new Function("getLength"));CodeVisitor checker = new CodeChecker();codeFile.accept(checker);}
}

在这个例子中:

  • CodeElement 是元素接口,定义了 accept() 方法。
  • VariableFunction 是具体元素,它们实现了 accept() 方法,用于调用访问者的 visit() 方法。
  • CodeVisitor 是访问者接口,定义了访问具体元素的方法。
  • CodeChecker 是具体访问者,实现了访问者接口中的方法,用于检查具体元素。
  • CodeFile 是对象结构,用于存储和遍历元素,以及调用访问者。

通过访问者模式,我们可以在不修改现有元素类的情况下增加新的行为,这提高了代码的灵活性和扩展性。

http://www.yayakq.cn/news/958398/

相关文章:

  • 万网如何购买网站空间wordpress怎么分段
  • 网站短链接怎么做wordpress 指定页面nofollow
  • 云主机可以放多少网站如何做购物网站的后台
  • 提供信息门户网站制作网站后台不能粘贴文章
  • 看视频做那个网站好网页设计师培训水公司
  • 用什么做网站后台的网站网页的优化方法
  • 网站地址跟网页地址区别如何给自己建设的网站设置登陆用户名和密码
  • 企业网站建设的开发方式有导师微信赚钱只投资10元
  • 做一个网站需要多少钱大概cpa单页网站怎么做
  • 深圳网站建设软件开发公司无锡做网站设计
  • 网站建设服务商是什么logo高清图片
  • 一个网站需要哪些备案瑞金建设局网站
  • asp网站安装优化大师官方下载
  • 做使用的网站有哪些网络推广目标计划
  • 网站首页设计报告免费建立个人视频网站
  • 一篇网站设计小结苏州集团网站制作开发
  • 重庆网站设计公司重庆网站建设吧
  • 宁波怎么做外贸公司网站永久免费自助建站推荐
  • 需要做网站的企业资源ssh框架做音乐网站
  • 网站建设哪里实惠网站开发子账号
  • 简述电子商务网站开发的基本流程商务互联 网站
  • 建立网站团队有哪些企业网站做的不错
  • 因网站开发需要网页设计学习总结
  • 无锡网站设计哪家公司好长沙正规竞价优化推荐
  • 嘉兴做微网站多少钱福建建设信息网站监理企业招聘
  • t想学网站建设wordpress图片源码
  • 移动端网站的优势搜索引擎优化教材答案
  • 网站优化效果企业摄影网站模板
  • 商城网站设计公司北京中交建设工程咨询有限公司网站
  • 锦州网站建设最低价58同城一样的网站怎样建设