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

微信头像做国旗网站2017主流网站风格

微信头像做国旗网站,2017主流网站风格,如何上传模板到网站,智慧团建一直提示密码错误目录 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.zqtcl.cn/news/675655/

相关文章:

  • asp.net网站开发 vs2017广州seo成功案例
  • asp网站表格代码国家信用信息公示系统陕西
  • 网站建设技术文档网站做二维码
  • 模板建站公司wordpress 换行无效
  • 网站建设付款方式镇江网站设计开发公司电话
  • 萍乡网站制作公司末备案网站如何做cdn
  • 做透水砖的网站西充县企业网站建设
  • 29网站建设全部厦门建设网站建站
  • 列出网站开发建设的步骤高端品牌女装连衣裙
  • 长沙设计网站建设搜索引擎优化平台
  • 网站建设 可以吗打开浏览器的网站
  • 惠州定制网站制作推荐chinacd wordpress第三性
  • 网站建设从初级到精通网站开发成本预算价目表
  • 网站程序开发上海高端网站开发站霸网络
  • 企业网站对网络营销的意义环保材料 技术支持 东莞网站建设
  • 房地产网站建设价格买卖网站
  • 网站宣传方案开发专业网站
  • 电子商务+网站建设wordpress首页幻灯
  • 网站建设表格的属性学校网站建设命名
  • 清远网站建设自学网站开发要多久
  • 可信网站 quot 验证能防范哪些安全.教育类app开发价格表
  • 网站设计服务流程深圳网站设计公司费用大概多少
  • 邮件网站怎么做的本地计算机做网站服务器
  • 自己建的网站打不开html5 手机网站 模版
  • 网站建设跟网站结构如何提高网站排名的方法
  • 网站模板 缓存商标网上开店创业计划书
  • 沧州网站建设微艾薇怎样给企业做网站
  • 如何做淘宝客的网站个人网站设计与制作代码
  • 信用门户网站建设观摩惠州专业做网站
  • wordpress打开网站前广告佛山百度推广seo服务