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

布吉做棋牌网站建设哪家技术好h5网站模板开发

布吉做棋牌网站建设哪家技术好,h5网站模板开发,分析 网站,wordpress iis7目录 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://www.w-s-a.com/news/150417/

相关文章:

  • 辽宁省建设注册中心网站wordpress 博客插件
  • 做电商看的网站有哪些网站建设需求策划书
  • 关于网站建设交易流程的描述一句话哪些网站用户体验好
  • 男女做暖暖的网站大全深圳平台网站建设外包
  • 凯里展示型网站设计抖音代运营收费详细价格
  • 外包网站会自己做原型吗网站制作怎样盈利
  • 为什么在百度搜不到我的网站电商网站开发过程
  • 什么是网站反链网页设计页面链接
  • 佛山企业网站制作韩国seocaso
  • 微信公司网站vue做社区网站
  • 蒙阴网站优化五核网站建设
  • 企业微商城网站建设wordpress新闻是哪个表
  • 重庆网站开发培训机构电商网站创办过程
  • 企业建网站得多少钱长沙财优化公司
  • 网站开发api平台扒完网站代码之后怎么做模板
  • PHP网站建设选择哪家好动画设计师月薪多少
  • 网站如何做市场推广网站开发主要步骤
  • 浏览器正能量网站网页文章导入wordpress
  • 江西中国建设银行网站首页永久免费自助建网站
  • 创建自己网站的步骤吸引人的微信软文
  • 网站建设与网页设计论述题软件开发公司在哪里
  • 二级网站建设方案模板亚马逊网站建设案例
  • 网站开发兼职团队门户网站如何制作
  • 高州市网站建设开发区招聘信息
  • 上海专业网站制作设计公司企业邮箱怎样注册
  • 网站建设在商标第几类网站建设 设计创意
  • 做一网站APP多少钱重庆中色十二冶金建设有限公司网站
  • 网上做效果图网站有哪些软件徐州泉山区建设局网站
  • 凯里网站制作网站篡改搜索引擎js
  • 如何使用凡科建设网站武安城乡建设网站