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

商城网站建设方案流程优化教程网官网

商城网站建设方案流程,优化教程网官网,宁波优化推广选哪家,桂林龙胜网站建设什么是访问者模式 访问者模式提供了一个作用于某对象结构中的各元素的操作表示,他使我们可以在不改变各元素的类的前提下定义作用于这些元素的新操作。     访问者模式主要包含以下几个角色:         Vistor(抽象访问者):为对象结…

什么是访问者模式

    访问者模式提供了一个作用于某对象结构中的各元素的操作表示,他使我们可以在不改变各元素的类的前提下定义作用于这些元素的新操作。
    访问者模式主要包含以下几个角色:
        Vistor(抽象访问者):为对象结构中每一个具体元素类声明一个访问操作,从这个操作的名称或参数类型可以清楚的知道需要访问的具体元素类型,具体访问者需要实现这些操作方法,定义对这些元素的访问操作。
        ConcreteVistor(具体访问者):实现了每一个由抽象访问者声明的操作,每一个操作用于访问对象结构中一种类型的元素。
        Element(抽象元素):一般是抽象类或接口,定义了一个由抽象访问者作为参数的方法。
        ConcreteElement(具体元素):实现了抽象元素中的方法,在该方法中调用访问者的访问方法以完成一个元素的操作。
        ObjectStructure(对象结构):是一个元素的集合,用于存放元素对象,并且提供了遍历集合的方法。

访问者模式的优缺点

优点

  1. 增加新的访问者很方便,无需修改源代码,符合开闭原则。
  2. 将有关元素对象的访问行为集中到一个访问者中,有利于对象结构中元素对象的复用。
  3. 可以在不修改现有元素层次结构的前提下,定义作用于该层次结构的操作。

缺点

  1. 增加新的元素类很困难,每增加一个元素类都要在抽象访问者角色中增加一个新的抽象操作,并在具体访问者类中增加相应的具体操作,违背了开闭原则。
  2. 破坏了封装,访问者对象需要访问并调用每一个元素对象的操作,这意味着元素对象有时候必须暴露一些自己的内部操作和状态。

访问者模式的应用场景

  1. 一个对象结构包含多个类型的对象,希望对这些对象的具体类型做一些操作。
  2. 需要对一个对象结构中的对象进行很多不同的并且不相关的操作。
  3. 对象结构中对象对应的类很少改变,经常需要在对象结构中定义新的操作。

访问者模式的案例

// 抽象访问者
public abstract class Action {/*** 得到男性 的测评** @param man man*/public abstract void getManResult(Man man);/*** 得到女的 测评** @param woman woman*/public abstract void getWomanResult(Woman woman);
}// 具体访问者
public class Success extends Action {@Overridepublic void getManResult(Man man) {System.out.println(" 男人给的评价该歌手很成功 !");}@Overridepublic void getWomanResult(Woman woman) {System.out.println(" 女人给的评价该歌手很成功 !");}}public class Wait extends Action {@Overridepublic void getManResult(Man man) {System.out.println(" 男人给的评价是该歌手待定 ..");}@Overridepublic void getWomanResult(Woman woman) {System.out.println(" 女人给的评价是该歌手待定 ..");}}public class Fail extends Action {@Overridepublic void getManResult(Man man) {System.out.println(" 男人给的评价该歌手失败 !");}@Overridepublic void getWomanResult(Woman woman) {System.out.println(" 女人给的评价该歌手失败 !");}}// 抽象元素
public abstract class Person {public abstract void accept(Action action);}// 具体元素
public class Man extends Person {@Overridepublic void accept(Action action) {action.getManResult(this);}}public class Woman extends Person {@Overridepublic void accept(Action action) {action.getWomanResult(this);}}// 对象结构
public class ObjectStructure {private final List<Person> persons = new LinkedList<>();public void attach(Person p) {persons.add(p);}public void detach(Person p) {persons.remove(p);}public void display(Action action) {for (Person p : persons) {p.accept(action);}}
}public static void main(String[] args) {//创建ObjectStructureObjectStructure objectStructure = new ObjectStructure();objectStructure.attach(new Man());objectStructure.attach(new Woman());//成功Success success = new Success();objectStructure.display(success);System.out.println("===============");Fail fail = new Fail();objectStructure.display(fail);System.out.println("=======给的是待定的测评========");Wait wait = new Wait();objectStructure.display(wait);
}

在这里插入图片描述


http://www.hrbkazy.com/news/46728.html

相关文章:

  • 企业网络推广网站建设夜狼seo
  • 新乡网站优化公司北京seo网站开发
  • 手机资讯类网站模板青岛seo网站推广
  • 常州网站建设案例软文案例
  • 静态网站可以做哪些seo优化推广流程
  • 公司网站建设合同模板黑马培训价目表
  • 怎样做微信推广网站重庆快速网络推广
  • WordPress仿b站主题站长工具无内鬼放心开车禁止收费
  • 做内容网站赚钱吗百中搜优化软件靠谱吗
  • 山西网站推广公司免费建网站哪家好
  • 直播视频网站源码手机免费建站app
  • 重庆微信网站制作百度推广需要多少钱
  • 网站建设配置网址seo优化排名
  • 网站建设常用的开发语言介绍凡科网站登录入口
  • 南京企业网站开发公司域名解析查询工具
  • 做淘宝客网站要不要备案磁力岛引擎
  • 企业网站建设网站优化推广河南网站推广优化排名
  • 如何防止网站被镜像合肥关键词优化平台
  • 网站做的好重庆网站优化软件
  • 用sql做简单的博客网站广州seo顾问服务
  • 做展示空间设计的网站网站的优化
  • 网站关键词排名不稳定商丘网络推广哪家好
  • 网站 做内容分发资格网店推广平台有哪些
  • 苏州工业园区最新通告宁德seo公司
  • 制作一个静态网站的步骤找平台推广
  • 做那事的网站5g影讯5g天线在线观看免费视频
  • 晋江网站建设费用谷歌下载
  • 网站栏目做树形结构图seo推广公司排名
  • 做网站多少钱网络推广员的前景
  • 设计师培训班费用合肥seo排名收费