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

维护公司网站建设网站拥有者查询

维护公司网站建设,网站拥有者查询,电子商务平台企业的网络组织类型是,活动策划书模板范文访问者模式 这个模式用的很少#xff0c;《设计模式》的作者评价为#xff1a; 大多情况下#xff0c;你不需要使用访问者模式#xff0c;但是一旦需要使用它时#xff0c;那就真的需要使用了 一、测评系统的需求 1)将观众分为男人和女人#xff0c;对歌手进行测评…访问者模式 这个模式用的很少《设计模式》的作者评价为 大多情况下你不需要使用访问者模式但是一旦需要使用它时那就真的需要使用了 一、测评系统的需求 1)将观众分为男人和女人对歌手进行测评当看完某个歌手表演后得到他们对该歌手不同的评价(评价 有不同的种类比如 成功、失败 等) 二、 传统方式的问题分析 1)如果系统比较小还是 ok 的但是考虑系统增加越来越多新的功能时对代码改动较大违反了 ocp 原则不利于维护 2)扩展性不好比如 增加了 新的人员类型或者管理方法都不好做 3)引出我们会使用新的设计模式 – 访问者模式 三、 访问者模式基本介绍 1)访问者模式Visitor Pattern封装一些作用于某种数据结构的各元素的操作它可以在不改变数据结构的前提下定义作用于这些元素的新的操作。 2)主要将数据结构与数据操作分离解决 数据结构和操作耦合性问题 3)访问者模式的基本工作原理是 在被访问的类里面加一个对外提供接待访问者的接口 4)访问者模式主要应用场景是 需要对一个对象结构中的对象进行很多不同操作(这些操作彼此没有关联)同时需要避免让这些操作污染这些对象的类可以选用访问者模式解决 四、访问者模式的原理类图 对原理类图的说明-即(访问者模式的角色及职责) 1)Visitor 是抽象访问者为该对象结构中的 ConcreteElement 的每一个类声明一个 visit 操作 2)ConcreteVisitor 是一个具体的访问者 实现每个有 Visitor 声明的操作是每个操作具体实现的部分. 3)ObjectStructure 能枚举它的元素 可以提供一个高层的接口用来允许访问者访问元素 4)Element 定义一个 accept 方法接收一个访问者对象 5)ConcreteElement 为具体元素实现了 accept 方法 五、访问者模式应用实例 1)将人分为男人和女人对歌手进行测评当看完某个歌手表演后得到他们对该歌手不同的评价(评价 有不同的种类比如 成功、失败 等)请使用访问者模式来说实现 2)思路分析和图解(类图) 3)代码实现 Action抽象的操作类他里面是抽象的操作方法 public abstract class Action {//得到男性 的测评public abstract void getManResult(Man man);//得到女的 测评public abstract void getWomanResult(Woman woman); } 主函数 public class Client {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);} } Fail public class Fail extends Action {Overridepublic void getManResult(Man man) {System.out.println( 男人给的评价该歌手失败 !);}Overridepublic void getWomanResult(Woman woman) {System.out.println( 女人给的评价该歌手失败 !);} } Man public class Man extends Person {Overridepublic void accept(Action action) {action.getManResult(this);} } ObjectStructure数据结构 //数据结构管理很多人Man , Woman public class ObjectStructure {//维护了一个集合private ListPerson persons new LinkedList();//增加到 listpublic 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);}}} Person抽象的人 类 public abstract class Person {//提供一个方法让访问者可以访问public abstract void accept(Action action); } Success public class Success extends Action {Overridepublic void getManResult(Man man) {System.out.println( 男人给的评价该歌手很成功 !);}Overridepublic void getWomanResult(Woman woman) {System.out.println( 女人给的评价该歌手很成功 !);} } Wait public class Wait extends Action {Overridepublic void getManResult(Man man) {System.out.println( 男人给的评价是该歌手待定 ..);}Overridepublic void getWomanResult(Woman woman) {System.out.println( 女人给的评价是该歌手待定 ..);} } Woman //说明 //1. 这里我们使用到了双分派, 即首先在客户端程序中将具体状态作为参数传递 Woman 中(第一次分派) //2. 然后 Woman 类调用作为参数的 具体方法 中方法 getWomanResult, 同时将自己(this)作为参数 // 传入完成第二次的分派 public class Woman extends Person{Overridepublic void accept(Action action) {action.getWomanResult(this);}} 六、访问者模式的注意事项和细节 优点 1)访问者模式符合单一职责原则、让程序具有优秀的扩展性、灵活性非常高 2)访问者模式可以对功能进行统一可以做报表、UI、拦截器与过滤器适用于数据结构相对稳定的系统 缺点 1)具体元素对访问者公布细节也就是说访问者关注了其他类的内部细节这是迪米特法则所不建议的, 这样造成了具体元素变更比较困难 2)违背了依赖倒转原则。访问者依赖的是具体元素而不是抽象元素 3)因此如果一个系统有比较稳定的数据结构又有经常变化的功能需求那么访问者模式就是比较合适的. 七、理解 通过ObjectStrcure传入对应的person的实现类并调用其accept()并传入具体的action的实现类 Perosn下面的具体实现类如Man类他的accept()方法里面又调用了传入的action的方法并把自己传入(this) 就是man调用accept()并传入了fail在man的accept方法中调用了fail的方法这个fail的方法又想要传入man类所以就出现了双生派 张三李四去按摩店例子 想到了个例子 张三和李四访问按摩店寻找按摩店的技师 ------------------------ 把张三李四抽象成Element抽象类为Perosn抽象类 Perosn抽象类里面有一个抽象方法呼叫技师call()方法 按摩店技师抽象成Visitor抽象类访问者也就是Technician抽象类 Technician抽象类里面有两个实现类1、金油技师2、腿部技师 他们分别对应对张三按摩方法makeToZhangsan()、对李四按摩方法makeToLisi() 技师Technician抽象类下面有两个实现一个是金油技师oilTech类一个是腿部技师LegsTech类 他们会实现对应的对张三按摩方法makeToZhangsan()、对李四按摩方法makeToLisi()并要求传入服务对象也就是Zhansan类还是Lisi类 Person抽象类有两个实现类一个是张三Zhansan类一个是李四Lisi类 他们实现call()方法并作出了实现这个方法传入我们要叫的具体技师如金油技师oilTech类 在这个call()方法中调用对应技师的服务张三方法makeToZhansan()或对李四按摩方法makeToLisi() -------------------------- 最后在ObjectStructure也就是对应的按摩中心的一个集合里面有增加服务对象方法attch()和移除服务对象方法detach()都是传入对应服务对象 通过这个集合来管理按摩中心的服务的人如张三、李四 然后有一个服务方法make去传入对应技师然后遍历调用对应里面服务服务对象的call()方法去呼唤技师。
http://www.tj-hxxt.cn/news/141550.html

相关文章:

  • wordpress 主图截图网络优化网站建设学习
  • 澄城县城乡建设局网站儿童主题网站的内容建设
  • 网站营销外包公司简介长沙传媒公司招聘
  • 我的南京网站wordpress企业魔板
  • 网站超级外链wordpress 第三方支付
  • 南京网站开发询南京乐识如何注册公司注册公司需要什么
  • 全省建设信息网站参考消息电子版报纸
  • 成都建站模板网站开发怎么破解wordpress图片防盗链
  • 如何用ps做网站导航条项目管理软件project手机版
  • 如何利用开源代码做网站广州比较好的外贸公司有哪些
  • 在百度上如何上传自己的网站品牌设计网站公司
  • 网站 优化 件大企业网站建设公司排名
  • 视觉设计的网站和app响应式网站建设方案
  • php工具箱是直接做网站的吗wordpress guid
  • 免费的ai写作网站网站开发专业都有哪些课程
  • 西安企业建站机构那里有甘肃省建设厅执业注册中心网站
  • 家政网站模板wordpress模板 手机版
  • html5网站开发特点小程序开发平台哪家性价比高
  • 景德镇网站维护wordpress本站导航在哪里
  • 破解php网站后台密码相册模板
  • 微网站建设的第一步是进行首页的设置深圳 网站科技
  • 寮步网站建设公司寺庙网站模板
  • 2345官方网站做淘宝店标的网站
  • 杭州微网站开发公司电话佳木斯哈尔滨网站建设
  • 苏州新区城乡建设网站前端和后端哪个难
  • 太和网站开发招聘新闻20条摘抄大全
  • 天津手机版建站系统网站建设主要做什么
  • 有没有做招聘网站的深圳网站设计十年乐云seo
  • 网站风格定位怎么写c2c模式在我国开始于1999年的
  • 网站是先解析后备案吗网站职业技术培训学校