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

一般网站开发用什么笔记本双滦网站建设

一般网站开发用什么笔记本,双滦网站建设,app产品网站模板,wordpress 裁剪图片上传目录 1. 说明2. 应用场景3. 结构图4. 构成5. 优缺点5.1 优点5.2 缺点 6. java示例6.1 非状态模式6.1.1 问题分析6.1.2 接口类6.1.2 实现类6.1.3 客户端6.1.4 结果截图 6.2 状态模式6.2.1 抽象状态类6.2.2 状态类6.2.3 上下文类6.2.4 上下文类 1. 说明 1.允许一个对象在其内部状… 目录 1. 说明2. 应用场景3. 结构图4. 构成5. 优缺点5.1 优点5.2 缺点 6. java示例6.1 非状态模式6.1.1 问题分析6.1.2 接口类6.1.2 实现类6.1.3 客户端6.1.4 结果截图 6.2 状态模式6.2.1 抽象状态类6.2.2 状态类6.2.3 上下文类6.2.4 上下文类 1. 说明 1.允许一个对象在其内部状态改变时改变它的行为。2.对象看起来似乎修改了它的类。3.对有状态的对象把复杂的“判断逻辑”提取到不同的状态对象中允许状态对象在其内部状态发生改变时改变其行为。 2. 应用场景 1.一个对象的行为决定于它的状态并且它必须在运行时刻根据状态改变它的行为。 2.一个操作中含有庞大的多分支的条件语句且这些分支依赖于该对象的状态。这个状态常用一个或多个枚举常量表示。通常有多个操作包含这一相同的条件结构。State模式将每一个条件分支放入一个独立的类中。这使得开发者可以根据对象自身的情况将对象的状态作为一个对象这一对象可以不依赖于其他对象独立变化。 3. 结构图 4. 构成 1.环境角色Context上下文定义客户端感兴趣的接口维护一个ConcreteState子类的实例这个实例定义当前状态2.抽象状态角色State状态定义一个接口以封装与Context的一个特定状态相关的行为3.具体状态角色ConcreteState具体状态子类每个子类实现与Context的一个状态相关的行为 5. 优缺点 5.1 优点 1.将所有与某个状态有关的行为放到一个类中并且可以方便地增加新的状态只需要改变对象状态即可改变对象的行为。2.允许状态转换逻辑与状态对象合成一体而不是某一个巨大的条件语句块。 5.2 缺点 1.状态模式的使用必然会增加系统类和对象的个数。2.状态模式的结构与实现都较为复杂如果使用不当将导致程序结构和代码的混乱。3.状态模式对开闭原则的支持并不太好。 6. java示例 6.1 非状态模式 6.1.1 问题分析 1.使用了大量的switch case这样的判断if else也是一样使程序的可阅读性变差2.扩展性差如果新加了一种状态则需要修改判断逻辑 6.1.2 接口类 package com.learning.state.before;/*** 电梯接口*/ public interface ILift {//定义四个电梯状态的常量/*** 打开状态*/int OPENING_STATE 1;/*** 关闭状态*/int CLOSING_STATE 2;/*** 运行状态*/int RUNNING_STATE 3;/*** 停止状态*/int STOPPING_STATE 4;//设置电梯状态的功能void setState(int state);//电梯操作功能void open();//电梯关闭功能void close();//电梯运行功能void run();//电梯停止功能void stop(); } 6.1.2 实现类 package com.learning.state.before;/*** Description 电梯类**/ public class Lift implements ILift{//当前电梯状态private int state;Overridepublic void setState(int state) {this.state state;}Overridepublic void open() {switch(state){//如果当前电梯状态是开启状态case OPENING_STATE://什么都不做break;//如果当前电梯状态是关闭状态打开电梯case CLOSING_STATE:System.out.println(电梯打开了);// 设置当前电梯状态为开启状态setState(OPENING_STATE);break;//如果当前电梯状态是运行状态case RUNNING_STATE://什么都不做break;//如果当前电梯状态是开启状态打开电梯case STOPPING_STATE:System.out.println(电梯打开了);setState(OPENING_STATE);break;}}Overridepublic void close() {switch(this.state) {case OPENING_STATE://只有开门状态可以关闭电梯门System.out.println(电梯关门了);//关门之后电梯就是关闭状态了this.setState(CLOSING_STATE);break;case CLOSING_STATE://已经是关门状态不能关门//什么都不做break;case RUNNING_STATE://运行时电梯门是关着的不能关门//什么都不做break;case STOPPING_STATE://停止时电梯也是关着的不能关门//什么都不做break;}}Overridepublic void run() {switch(this.state) {case OPENING_STATE://电梯不能开着门运行break;case CLOSING_STATE://门关了可以运行了System.out.println(电梯运行了);//设置为运行状态this.setState(RUNNING_STATE);break;case RUNNING_STATE://已经是运行状态了break;case STOPPING_STATE:System.out.println(电梯运行了);//设置为运行状态this.setState(RUNNING_STATE);break;}}Overridepublic void stop() {switch(this.state) {case OPENING_STATE:// 开门的电梯已经是是停止的了(正常情况下)break;case CLOSING_STATE:// 关门时才可以停止System.out.println(电梯停止了);this.setState(STOPPING_STATE);break;case RUNNING_STATE:// 运行时当然可以停止了System.out.println(电梯停止了);this.setState(STOPPING_STATE);break;case STOPPING_STATE:break;}} } 6.1.3 客户端 package com.learning.state.before;/*** 客户端*/ public class Client {public static void main(String[] args) {// 创建电梯对象Lift lift new Lift();// 设置当前电梯的状态lift.setState(ILift.OPENING_STATE);// 打开lift.open();lift.close();lift.run();lift.stop();} }6.1.4 结果截图 6.2 状态模式 6.2.1 抽象状态类 package com.learning.state.after;/*** 抽象状态类*/ public abstract class LiftState {// 声明环境角色类变量protected Context context;public void setContext(Context context){this.context context;}// 电梯开启操作public abstract void open();// 电梯关闭操作public abstract void close();// 电梯运行操作public abstract void run();// 电梯停止操作public abstract void stop(); } 6.2.2 状态类 1.开启状态类 package com.learning.state.after;/*** 开启状态类*/ public class OpeningState extends LiftState {// 当前状态要执行的方法Overridepublic void open() {System.out.println(电梯开启);}Overridepublic void close() {// 修改状态super.context.setLiftState(Context.CLOSING_STATE);// 调用当前状态中的context中的close方法super.context.close();}Overridepublic void run() {// 什么都不做}Overridepublic void stop() {// 什么都不做} }2.运行状态类 package com.learning.state.after;/** * 运行状态类 */ public class RunningState extends LiftState {/*** 运行的时候是不能开电梯门*/Overridepublic void open() {// 什么都不做}/*** 运行状态的电梯门不需要再关*/Overridepublic void close() {// 什么都不做}/*** 运行状态下要实现的方法*/Overridepublic void run() {System.out.println(电梯正在运行);}/*** 运行状态可以停止*/Overridepublic void stop() {super.context.setLiftState(Context.STOPPING_STATE);super.context.stop();} } 3.停止状态类 package com.learning.state.after;/*** 停止状态类*/ public class StoppingState extends LiftState {/*** 停止状态可以开门*/Overridepublic void open() {// 状态修改super.context.setLiftState(Context.OPENING_STATE);// 动作委托为CloseState来执行也就是委托给ClosingState子类执行这个动作super.context.getLiftState().open();}/*** 可以关门这个动作不归我执行*/Overridepublic void close() {// 状态修改super.context.setLiftState(Context.CLOSING_STATE);// 动作委托为CloseState来执行也就是委托给ClosingState子类执行这个动作super.context.getLiftState().close();}/*** 停止后可以再跑起来*/Overridepublic void run() {// 状态修改super.context.setLiftState(Context.RUNNING_STATE);// 动作委托为CloseState来执行也就是委托给ClosingState子类执行这个动作super.context.getLiftState().run();}/*** 停止方法执行*/Overridepublic void stop() {System.out.println(电梯停止了);} } 4.关闭状态类 package com.learning.state.after;/*** 关闭状态类*/ public class ClosingState extends LiftState {/*** 电梯关闭状态可以再打开*/Overridepublic void open() {super.context.setLiftState(Context.OPENING_STATE);super.context.open();}/*** 电梯关闭状态实现的动作*/Overridepublic void close() {System.out.println(电梯门关闭);}/*** 电梯关门之后启动*/Overridepublic void run() {super.context.setLiftState(Context.RUNNING_STATE);super.context.run();}/*** 电梯门关着但没按楼层*/Overridepublic void stop() {super.context.setLiftState(Context.STOPPING_STATE);super.context.stop();} }6.2.3 上下文类 package com.learning.state.after;public class Context {// 定义对应状态对象的常量public final static OpeningState OPENING_STATE new OpeningState();public final static ClosingState CLOSING_STATE new ClosingState();public final static RunningState RUNNING_STATE new RunningState();public final static StoppingState STOPPING_STATE new StoppingState();// 定义一个当前电梯状态变量private LiftState liftState;public LiftState getLiftState(){return liftState;}public void setLiftState(LiftState liftState){this.liftState liftState;// 设置当前状态对象中的Context对象this.liftState.setContext(this);}public void open(){this.liftState.open();}public void close(){this.liftState.close();}public void run(){this.liftState.run();}public void stop(){this.liftState.stop();}} 6.2.4 上下文类 package com.learning.state.after;/*** 客户端类*/ public class Client {public static void main(String[] args) {// 创建环境角色对象Context context new Context();// 设置当前电梯状态context.setLiftState(Context.CLOSING_STATE);context.open();context.close();context.run();context.stop();} }
http://www.hkea.cn/news/14288732/

相关文章:

  • 企业建设项目哪个网站可以查最好的网站开发
  • 网站备案在哪个网站电脑学校
  • 贵州省建设厅官网站wordpress整合微信登陆
  • 安徽省工程建设监理协会网站网络营销方式ppt
  • 网站程序0daywordpress网站上线
  • 百度搜索排名优化淘宝seo优化推广
  • 江苏省建设厅八大员考试报名网站广州建站网络公司
  • 网站死链接查询兰州迅豹网络
  • 网站建设的费用结构包括o2o模式是什么意思通俗讲
  • 如何做网站详细步骤wordpress禁止搜索代码
  • 网站做第三方登录界面想开民宿自己怎么做介绍的网站
  • 服装网站设计阿里 域名解析 网站建设
  • 龙华网站开发公司电话语音定制软件
  • 空间域名主机网站模板怎样在wordpress页面嵌入div
  • 网站建设 福田顶易云外贸软件
  • 青岛网站建设培训重点专业建设验收网站
  • 网站分辨率seo服务如何收费
  • 免费下载ppt模板的网站有哪些上海网站建设制作微信
  • 小韩网站源码红色网站建设的比较好的高校
  • 网站做的支付宝接口一些有趣的网站
  • 福田企业网站优化排名要看网站是多少
  • 做网站用上面软件写代码比较好中小企业查询官网
  • 南平企业网站建设免费在线咨询软件
  • 百度网站建设公司无锡网站建设 君通科技
  • 中山市路桥建设有限公司网站asp源码-漂亮企业源码大气公司网站模版
  • 网站分站作用网站开发确认书
  • 网站建设专家是干嘛的昆明电商网站建设
  • 修改网站参数用什么工具做网站
  • 东莞商城网站建设哪里比较好wordpress 插件更新
  • 青岛市黄岛区城市建设局网站企业网站建设单位