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

手机网站有吗做积分商城网站

手机网站有吗,做积分商城网站,网站建设走什么科目,装修案例分析状态模式:类的行为基于它的状态改变 属于行为型模式,创建表示各种状态的对象和一个行为随着状态对象改变而改变的 context 对象。在代码中包含大量与对象状态有关的条件语句可以通过此模式将各种具体的状态类抽象出来 介绍 意图:允许对象在…

状态模式:类的行为基于它的状态改变 属于行为型模式,创建表示各种状态的对象和一个行为随着状态对象改变而改变的 context 对象。在代码中包含大量与对象状态有关的条件语句可以通过此模式将各种具体的状态类抽象出来

介绍
  • 意图:允许对象在内部状态发生改变时改变它的行为,对象看起来好像修改了它的类。
  • 主要解决问题:对象的行为依赖于它的状态(属性),并且可以根据它的状态改变而改变它的相关行为。
  • 关键代码:通常命令模式的接口中只有一个方法。而状态模式的接口中有一个或者多个方法。而且,状态模式的实现类的方法,一般返回值,或者是改变实例变量的值。也就是说,状态模式一般和对象的状态有关。实现类的方法有不同的功能,覆盖接口中的方法。状态模式和命令模式一样,也可以用于消除 if...else 等条件选择语句。
  • 优点:1、封装了转换规则。 2、枚举可能的状态,在枚举状态之前需要确定状态种类。 3、将所有与某个状态有关的行为放到一个类中,并且可以方便地增加新的状态,只需要改变对象状态即可改变对象的行为。 4、允许状态转换逻辑与状态对象合成一体,而不是某一个巨大的条件语句块。5、可以让多个环境对象共享一个状态对象,从而减少系统中对象的个数。
  • 缺点:1、状态模式的使用必然会增加系统类和对象的个数。 2、状态模式的结构与实现都较为复杂,如果使用不当将导致程序结构和代码的混乱。 3、状态模式对"开闭原则"的支持并不太好,对于可以切换状态的状态模式,增加新的状态类需要修改那些负责状态转换的源代码,否则无法切换到新增状态,而且修改某个状态类的行为也需修改对应类的源代码。
示例

以图形状态 三角形、圆形、矩形为例:

  1. 创建一个接口
    public interface State { void doAction(Shape shape);String toStr();
    }
  2. 创建 Shape类。
    public class Shape {private State state;public State getState() {return state;}public void setState(State state) {this.state = state;}
    }
  3. 创建实现接口的实体类
    三角形状态
    public class TriangleState implements State{@Overridepublic void doAction(Shape shape) {shape.setState(this);}@Overridepublic String toStr(){return "三角形";}
    }
    圆形状态
    public class CircularState implements State{@Overridepublic void doAction(Shape shape) {shape.setState(this);}@Overridepublic String toStr(){return "圆形";}
    }
    矩形状态
    public class RectangleState implements State{@Overridepublic void doAction(Shape shape) {shape.setState(this);}@Overridepublic String toStr(){return "矩形";}
    }
  4. 使用
        public static void main(String[] args) {Shape shape = new Shape();TriangleState triangleState = new TriangleState();triangleState.doAction(shape);String state =  shape.getState().toStr();//三角形CircularState circularState = new CircularState();circularState.doAction(shape);state =  shape.getState().toStr();//圆形RectangleState rectangleState = new RectangleState();rectangleState.doAction(shape);state =  shape.getState().toStr();//矩形}

http://www.yayakq.cn/news/597138/

相关文章:

  • 合肥做兼职网站设计深圳app网站建设哪家好
  • 公司主页网站制作深圳网站seo
  • 广宁住房和城乡建设局网站中山软件开发
  • 申请域名之后如何做网站电脑建站软件
  • 自做美食哪些网站东莞市建设局网站6
  • hexo建设网站一个备案可以做几个网站吗
  • 自己怎么建设网站在线设计图片网站总结
  • 和别人做网站接单赚钱营销型网站怎么做
  • 深圳网站工作室网站建设的成果怎么写
  • 泰州模板开发建站做网站后期自己可以维护吗
  • 市住房和城乡规划建设局网站中国质量建设协会网站
  • 北京网站设计公司排行榜西昌seo快速排名
  • 装修网站平台有哪些网站如何做反爬
  • 私人做网站费用广东哪里有网站建设
  • 跨境电商怎么做一件代发中小企业网站优化
  • 弹幕网站是什么技术做的常州新北建设局网站
  • 百度做玻璃钢的网站建设银行网站查余额
  • pc网站开发微信支付wordpress固定连接无法显示
  • 品牌网站设计我的网站 dedecms
  • 开网站程序做网站服务器应该怎么配置
  • 网站不被百度收录做房产网站怎么样
  • 网站备案 信息查询网络规划设计师课件
  • 学网站开发有什么好处创建网站的一般步骤
  • 网站建设参考网站的说明网易企业邮箱是干嘛的
  • 王者荣耀网站开发目的app开发公司哪里做
  • 做网站开发 甲方提供资料微信小程序登录平台
  • 明星 卡片网站该怎么做网站建设是不是可以免费建站
  • 网站地址跟网页地址区别上海网页制作机构
  • 黑龙江网站备案管理局wordpress更改固定链接打不开
  • 有经验的常州网站建设软件开发合同注意事项