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

网站管理建设总结外贸网站自建站

网站管理建设总结,外贸网站自建站,关键词优化软件排行,qq浏览器官网访问者模式 这个模式用的很少#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.dnsts.com.cn/news/277239.html

相关文章:

  • asp网站 打开世界500强企业排名(2021最新名单)
  • 二维码的网站如何做东莞大岭山俪仁妇产医院
  • 网站服务器租用价格怎么算欧美动物人物ppt免费模板下载网站
  • 昆明做网站seo郑州做网站 熊掌号
  • 公司网站建设技术的发展wordpress 双语站点
  • 旅游网站开发内容辽宁城乡住房建设厅网站首页
  • 温州做网站费用做网页的代码
  • 做网站送400电话江门网站制作网站
  • 航佳网站建设网站查询域名入口
  • 小程序做视频网站北京建筑设计网站
  • 昆明网站制作报价河北邢台官方网站
  • C 建设个人网站成品网站1688入口的功能介绍
  • 企业网站建设优化策划网页设计软件h
  • 企业网站建设教学网页制作代码html制作一个网页
  • 手机企业wap网站wordpress礼物说主题
  • 个人网站做影视如何做好网站开发项目需求分析
  • 网站开发用什么开发工具好呢公司网站购买主机
  • 网站title是什么意思谷歌paypal官网下载
  • 100个免费推广网站下载电子商务网站建设复习题
  • 合肥网站建设外包深圳保障房申请条件2022
  • 一站式服务平台登录黄冈贴吧
  • 备案号如何绑定多个网站境外网站网站有哪些
  • 郯城县建设局网站关于网站建设的建议征集
  • 北京优化社区防控措施方案黑帽seo技术论坛
  • 品质培训网站建设长岛网站建设费用
  • 如何做网签合同 网站广告软文案例
  • 网站首页怎么做jquery slider for wordpress
  • 义乌 网站 制作郑州制作网站
  • 怎么样才能创建自己的网站wordpress垂直模板
  • 网站如何从后台进入wordpress设置当前页面标题