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

山西太原建站哪家弿福州公司网站建设一定要用主流程序php语言

山西太原建站哪家弿,福州公司网站建设一定要用主流程序php语言,wordpress图片调方法,链接转二维码生成器一、什么是状态模式 状态#xff08;State#xff09;模式的定义#xff1a;对有状态的对象#xff0c;把复杂的“判断逻辑”提取到不同的状态对象中#xff0c;允许状态对象在其内部状态发生改变时改变其行为。 状态模式包含以下主要角色#xff1a; 环境类#xff08…一、什么是状态模式 状态State模式的定义对有状态的对象把复杂的“判断逻辑”提取到不同的状态对象中允许状态对象在其内部状态发生改变时改变其行为。 状态模式包含以下主要角色 环境类Context角色也称为上下文它定义了客户端需要的接口内部维护一个当前状态并负责具体状态的切换。抽象状态State角色定义一个接口用以封装环境对象中的特定状态所对应的行为可以有一个或多个行为。具体状态Concrete State角色实现抽象状态所对应的行为并且在需要的情况下进行状态切换。 二、状态模式的实现 1. 抽象状态State /*** author FluffyCatkin* version 1.0* date 2020/1/7 0007 15:01* description 抽象状态State角色定义一个接口用以封装环境对象中的特定状态所对应的行为。*/ public abstract class State {public abstract void behavior(Context context); } 2. 环境Context /*** author FluffyCatkin* version 1.0* date 2020/1/7 0007 15:01* description 环境Context角色也称为上下文它定义了客户感兴趣的接口维护一个当前状态并将与状态相关的操作委托给当前状态对象来处理。*/ public class Context {private State state;public Context(){this.state new ConcreteStateA();}public State getState() {return state;}public void setState(State state) {this.state state;}public void handle(){state.behavior(this);} } 3. 具体状态Concrete State 具体状态A /*** author FluffyCatkin* version 1.0* date 2020/1/7 0007 15:01* description 具体状态Concrete State角色实现抽象状态所对应的行为。*/ public class ConcreteStateA extends State {Overridepublic void behavior(Context context) {System.out.println(ConcreteStateA..................);context.setState(new ConcreteStateB());} } 具体状态B /*** author FluffyCatkin* version 1.0* date 2020/1/7 0007 15:01* description 具体状态Concrete State角色实现抽象状态所对应的行为。*/ public class ConcreteStateB extends State {Overridepublic void behavior(Context context) {System.out.println(ConcreteStateB............);context.setState(new ConcreteStateA());} } 4. 测试类 /*** author FluffyCatkin* version 1.0* date 2020/1/7 0007 15:00* description 狀態模式** 在软件开发过程中应用程序中的有些对象可能会根据不同的情况做出不同的行为我们把这种对象称为有状态的对象而把影响对象行为的一个或多个动态变化的属性称为状态。当有状态的对象与外部事件产生互动时其内部状态会发生改变从而使得其行为也随之发生改变。如人的情绪有高兴的时候和伤心的时候不同的情绪有不同的行为当然外界也会影响其情绪变化。** 对这种有状态的对象编程传统的解决方案是将这些所有可能发生的情况全都考虑到然后使用 if-else 语句来做状态判断再进行不同情况的处理。但当对象的状态很多时程序会变得很复杂。而且增加新的状态要添加新的 if-else 语句这违背了“开闭原则”不利于程序的扩展。** 以上问题如果采用“状态模式”就能很好地得到解决。状态模式的解决思想是当控制一个对象状态转换的条件表达式过于复杂时把相关“判断逻辑”提取出来放到一系列的状态类当中这样可以把原来复杂的逻辑判断简单化。* 状态模式的定义与特点* 状态State模式的定义对有状态的对象把复杂的“判断逻辑”提取到不同的状态对象中允许状态对象在其内部状态发生改变时改变其行为。** 状态模式是一种对象行为型模式其主要优点如下* 状态模式将与特定状态相关的行为局部化到一个状态中并且将不同状态的行为分割开来满足“单一职责原则”。* 减少对象间的相互依赖。将不同的状态引入独立的对象中会使得状态转换变得更加明确且减少对象间的相互依赖。* 有利于程序的扩展。通过定义新的子类很容易地增加新的状态和转换。** 状态模式的主要缺点如下:* 状态模式的使用必然会增加系统的类与对象的个数。* 状态模式的结构与实现都较为复杂如果使用不当会导致程序结构和代码的混乱。* 状态模式的结构与实现* 状态模式把受环境改变的对象行为包装在不同的状态对象里其意图是让一个对象在其内部状态改变的时候其行为也随之改变。现在我们来分析其基本结构和实现方法。* 模式的结构:* 状态模式包含以下主要角色。环境Context角色也称为上下文它定义了客户感兴趣的接口维护一个当前状态并将与状态相关的操作委托给当前状态对象来处理。* 抽象状态State角色定义一个接口用以封装环境对象中的特定状态所对应的行为。* 具体状态Concrete State角色实现抽象状态所对应的行为。* 状态模式的应用场景:* 通常在以下情况下可以考虑使用状态模式。当一个对象的行为取决于它的状态并且它必须在运行时根据状态改变它的行为时就可以考虑使用状态模式。* 一个操作中含有庞大的分支结构并且这些分支决定于对象的状态时。*/ public class Main {Testpublic void stateMode(){Context context new Context();context.handle();context.handle();context.handle();context.handle();}} 运行结果 ConcreteStateA.................. ConcreteStateB............ ConcreteStateA.................. ConcreteStateB............Process finished with exit code 0c三、应用场景 通常在以下情况下可以考虑使用状态模式: 当一个对象的行为取决于它的状态并且它必须在运行时根据状态改变它的行为时就可以考虑使用状态模式。一个操作中含有庞大的分支结构并且这些分支决定于对象的状态时。 四、优缺点分析 状态模式是一种对象行为型模式其主要优点如下 结构清晰状态模式将与特定状态相关的行为局部化到一个状态中并且将不同状态的行为分割开来满足“单一职责原则”。将状态转换显示化减少对象间的相互依赖。将不同的状态引入独立的对象中会使得状态转换变得更加明确且减少对象间的相互依赖。状态类职责明确有利于程序的扩展。通过定义新的子类很容易地增加新的状态和转换。 状态模式的主要缺点如下 状态模式的使用必然会增加系统的类与对象的个数。状态模式的结构与实现都较为复杂如果使用不当会导致程序结构和代码的混乱。状态模式对开闭原则的支持并不太好对于可以切换状态的状态模式增加新的状态类需要修改那些负责状态转换的源码否则无法切换到新增状态而且修改某个状态类的行为也需要修改对应类的源码。 代码地址https://gitee.com/fluffycatkin/JavaDesignModel.git 原文出处http://c.biancheng.net/view/1388.html
http://www.dnsts.com.cn/news/161934.html

相关文章:

  • 请上传网站应用水印图片手机网站建设专家
  • 装修公司 网站模板企业网站的基本内容
  • 怎么做网站内的搜索wordpress 图片水印插件
  • 网站图片上的水印怎么做单县住房和城乡建设局网站
  • 网站前台 后台洛阳住房和城乡建设厅网站
  • 网站搜索模块建自己网址的免费网页
  • 笔记本电脑可以做网站服务器河南省建设银行网站
  • 网站建设教程平台wordpress php 5.2.17
  • 手机字体下载大全免费网站黄骅市有什么好玩的地方
  • 用jsp做网站步骤深圳做网站比较好的公司有哪些
  • 江苏省建设集团有限公司网站首页广州3d网站开发
  • 桐乡住房和建设局网站爱做网站免费版
  • 婚恋网站建设的目的怎么评价一个网站设计做的好坏
  • 365网站建设电子商务公司属于什么行业类别
  • 高校后勤网站建设要求及内容网站建设对比
  • 建一个类似淘宝的网站需要多少钱免费公司网站源码
  • 新余商城网站建设广州网站制作公司电话
  • 安徽省建设厅八大员报名网站注册了域名怎样做网站
  • dw做的网站不显示下载学校网站模板下载
  • 网站轮播代码宣城市建设监督管理局网站
  • 给个网站能用的2022郑州网站优化方案
  • 信阳网站开发竞价恶意点击立案标准
  • 网站开发职业认知小结橙色wordpress模板
  • phpcms网站源码哈尔滨站建站时间
  • 发布asp.net网站到虚拟主机榆林网站建设
  • 搜索引擎网站大全洋气的文化传媒公司名字
  • 配送网站开发怎么做切片网站
  • 做网站是什么鬼移动前端开发需要学什么
  • preec网站甘肃建设银行网站
  • 网站数据库数据丢失湖南省长沙建设工程造价站网站