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

个人建什么网站比较好布吉附近网站建设公司

个人建什么网站比较好,布吉附近网站建设公司,宝塔建站wordpress,图片分页wordpress主题目录 1.访问者模式简介 2.cola访问者模式应用 2.1 cola被访问者类图 2.2 cola访问者类图 我们知道#xff0c;如果一个对象结构包含很多类型的对象#xff0c;希望对这些对象实施一些依赖其具体类型的操作#xff0c;但又避免让这些操作“污染”这些对象的类#xff0c…目录 1.访问者模式简介 2.cola访问者模式应用 2.1 cola被访问者类图 2.2 cola访问者类图 我们知道如果一个对象结构包含很多类型的对象希望对这些对象实施一些依赖其具体类型的操作但又避免让这些操作“污染”这些对象的类也不希望在增加新操作时修改这些类那么可以使用访问者设计模式它使得我们可以将相关的访问操作集中起来定义在访问者类中将对象本身与对象的访问操作分离。 在cola框架中针对状态机StateMachine和状态State就应用了访问者模式下面进行具体分析 附 cola状态机源码解析见上篇文章cola架构有限状态机FSM源码分析 1.访问者模式简介 访问者Visitor模式将作用于某种数据结构中的各元素的操作分离出来封装成独立的类使其在不改变数据结构的前提下可以添加作用于这些元素的新的操作为数据结构中的每个元素提供多种访问方式。 访问者模式包含的类/接口如下 抽象访问者Visitor定义一个访问具体元素的接口为每个具体元素类对应一个访问操作 visit() 该操作中的参数类型标识了被访问的具体元素。 具体访问者ConcreteVisitor实现抽象访问者角色中声明的各个访问操作确定访问者访问一个元素时该做什么。 抽象元素Element声明一个包含接受操作 accept() 的接口被接受的访问者对象作为 accept() 方法的参数。 具体元素ConcreteElement实现抽象元素角色提供的 accept() 操作其方法体通常都是 visitor.visit(this) 另外具体元素中可能还包含本身业务逻辑的相关操作 对象结构Object Structure是一个包含元素角色的容器提供让访问者对象遍历容器中的所有元素的方法通常由 List、Set、Map 等聚合类实现。 相关类图及引用结构如下 2.cola访问者模式应用 2.1 cola被访问者类图 cola被访问者类图如下包含被访问者State和StateMachine Visitable接口定义了accept接口接受Visitor参数对象 public interface Visitable {String accept(final Visitor visitor); } StateImpl实现accept接口如下 public class StateImplS,E,C implements StateS,E,C {Overridepublic String accept(Visitor visitor) {String entry visitor.visitOnEntry(this);String exit visitor.visitOnExit(this);return entry exit;} } StateMachineImpl实现accept接口如下 public class StateMachineImplS, E, C implements StateMachineS, E, C {Overridepublic String accept(Visitor visitor) {StringBuilder sb new StringBuilder();sb.append(visitor.visitOnEntry(this));for (State state : stateMap.values()) {sb.append(state.accept(visitor));}sb.append(visitor.visitOnExit(this));return sb.toString();} } 实现逻辑里通过简单调用访问者类的visit方法完成对被访问者的访问。 2.2 cola访问者类图 cola访问者包含PlantUMLVisitor和SysOutVisitor类图如下 Visitor接口约定了分别针对State和StateMachine的visit接口方法 /*** Visitor** author Frank Zhang* date 2020-02-08 8:41 PM*/ public interface Visitor {char LF \n;/*** param visitable the element to be visited.* return*/String visitOnEntry(StateMachine?, ?, ? visitable);/*** param visitable the element to be visited.* return*/String visitOnExit(StateMachine?, ?, ? visitable);/*** param visitable the element to be visited.* return*/String visitOnEntry(State?, ?, ? visitable);/*** param visitable the element to be visited.* return*/String visitOnExit(State?, ?, ? visitable); } PlantUMLVisitor实现了针对State和StateMachine的plantuml方式的输出格式SysOutVisitor实现了对State和StateMachine简单日志输出 /*** PlantUMLVisitor** author Frank Zhang* date 2020-02-09 7:47 PM*/ public class PlantUMLVisitor implements Visitor {/*** Since the state machine is stateless, there is no initial state.** You have to add [*] - initialState to mark it as a state machine diagram.* otherwise it will be recognized as a sequence diagram.** param visitable the element to be visited.* return*/Overridepublic String visitOnEntry(StateMachine?, ?, ? visitable) {return startuml LF;}Overridepublic String visitOnExit(StateMachine?, ?, ? visitable) {return enduml;}Overridepublic String visitOnEntry(State?, ?, ? state) {StringBuilder sb new StringBuilder();for(Transition transition: state.getAllTransitions()){sb.append(transition.getSource().getId()).append( -- ).append(transition.getTarget().getId()).append( : ).append(transition.getEvent()).append(LF);}return sb.toString();}Overridepublic String visitOnExit(State?, ?, ? state) {return ;} } /*** SysOutVisitor** author Frank Zhang* date 2020-02-08 8:48 PM*/ public class SysOutVisitor implements Visitor {Overridepublic String visitOnEntry(StateMachine?, ?, ? stateMachine) {String entry -----StateMachine:stateMachine.getMachineId()-------;System.out.println(entry);return entry;}Overridepublic String visitOnExit(StateMachine?, ?, ? stateMachine) {String exit ------------------------;System.out.println(exit);return exit;}Overridepublic String visitOnEntry(State?, ?, ? state) {StringBuilder sb new StringBuilder();String stateStr State:state.getId();sb.append(stateStr).append(LF);System.out.println(stateStr);for(Transition transition: state.getAllTransitions()){String transitionStr Transition:transition;sb.append(transitionStr).append(LF);System.out.println(transitionStr);}return sb.toString();}Overridepublic String visitOnExit(State?, ?, ? visitable) {return ;} } 至此应用访问者模式实现了将被访问类和访问操作进行逻辑隔离、解耦。
http://wiki.neutronadmin.com/news/50170/

相关文章:

  • 爱网站黄页网站开发的硬件设备有
  • 常德网站设计一二三年级手工
  • 做响应式网站的物流怎样制作网页设计
  • 双语版网站怎么做wordpress文章摘要显示
  • 西宁公司做网站网站建设 五金
  • 网站地图网页的制作太原网站的优化
  • 网站开发 设计文档seo服务包括哪些
  • 建设网站需要哪些手续常见的网络营销推广方法有哪些
  • 公司内部网站管理系统济南建设档案大厦
  • 昌江县住房和城乡建设网站网站制作软件大全
  • 北京优秀网站设计公司最旺的公司名称大全
  • 外网设计素材网站网站建设外包公司管理方法
  • 化妆品销售网站开发与设计博客群wordpress
  • 做电商网站需要的证便宜点的WordPress
  • 做网站服务器配置怎么选哈尔滨app开发
  • 邯郸网站制作找谁腾讯云 安装wordpress
  • 如何填写网站开发验收单建设银行租房网站湖北
  • 东莞网页制作免费网站制作厦门比较有名的设计公司
  • iis的默认网站没有自动启动广州短视频运营培训
  • 百顺网站建设四川建设网证书查询平台官网
  • 关于单位网站建设的报告app开发公司的管理体系
  • 电子商务网站建设及维护管理wordpress 替换字体颜色
  • 微网站地图定位效果好的徐州网站开发
  • 网站建设免费的房地产公司网站 源码
  • 先做产品网站还是app河南电力建设工程公司网站
  • 平面设计展示网站平面设计免费软件有哪些
  • 深圳建网站兴田德润优秀石家庄有做网站的公司吗
  • 建网站的服务器乐陵天气预报15天查询百度
  • 视频网站后台管理老板网人才招聘
  • 网站开发与维护费用代点任意广告链接网站