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

单页面网站制作技术欧派全屋定制多少钱一平米

单页面网站制作技术,欧派全屋定制多少钱一平米,网架公司有哪些,手机制作最简单钓鱼网站真知即所以为行#xff0c;不行不足谓之知 一#xff0c;定义 当一个对象的内在状态改变时#xff0c;允许改变其行为#xff0c;这个对象看起来像是改变了其类。 这么说可能很难理解#xff0c;通俗来讲就是当一个对象它有多种状态的时候#xff0c;把每一种状态的行为…真知即所以为行不行不足谓之知 一定义 当一个对象的内在状态改变时允许改变其行为这个对象看起来像是改变了其类。 这么说可能很难理解通俗来讲就是当一个对象它有多种状态的时候把每一种状态的行为都包装在一个状态对象里让一个对象在其内部状态改变的时候其行为也随之改变。 状态模式将每一个条件分支放入一个独立的类中这使得你可以根据对象自身的情况将对象的状态作为一个对象这一对象可以不依赖于其他对象而独立变化这样通过多态来去除过多的重复的if-else等分支语句。 二使用场景 1一个对象的行为取决于它的状态并且它必须在运行时根据状态改变它的行为。 2代码中包含大量与对象状态有关的条件语句。 三使用案例 假设我们的app有一种特殊场景有离线模式和在线模式离线模式下会进行一系列的操作比如加载缓存等在线模式下会进行一系列的操作比如请求网络等。 假如我们不使用状态模式通常代码是下面这样的 public class WorkEvent {private boolean isNet;public WorkEvent(boolean isNet) {this.isNet isNet;}public void doWork(){if(isNet){System.out.println(----请求服务器);System.out.println(----加载网络页面);}else {System.out.println(----读取本地缓存);System.out.println(----加载缓存页面);}} } 使用时 //---------------连网----------- ConfigManger.getEtnConfigRepository().saveNetState(true);//存到sp里网络状态 WorkEvent workEvent new WorkEvent(true); workEvent.doWork(); //----------------断网--------------- ConfigManger.getEtnConfigRepository().saveNetState(false);//存到sp里网络状态 WorkEvent workEvent new WorkEvent(false); workEvent.doWork(); 这样做不仅需要在内存中存储网络状态还要在处理类中增加各种if-else判断逻辑看起来比较混乱。 接下来我们使用状态模式看看。 首先新建一个网络状态接口 public interface NetState {/*** 处理逻辑* */void dowork();/*** 获取当前网络状态* */boolean getNetState(); } 然后创建具体的网络状态类实现网络状态接口 public class OnLineState implements NetState{Overridepublic void dowork() {System.out.println(----请求服务器);System.out.println(----加载网络页面);}Overridepublic boolean getNetState() {return true;} } public class OffLineState implements NetState{Overridepublic void dowork() {System.out.println(----读取本地缓存);System.out.println(----加载缓存页面);}Overridepublic boolean getNetState() {return false;} } 然后实现单例模式的网络状态上下文类要注意不要持有Activity引用避免内存泄漏问题 public class NetStateContext {private NetStateContext() {}// 私有的静态内部类private static class Holder {private static NetStateContext instance new NetStateContext();}// 开放的获取单例对象的方法public static NetStateContext getInstance() {return NetStateContext.Holder.instance;}private NetState netState new OnLineState();//默认在线public void setNetState(NetState netState) {this.netState netState;this.netState.dowork();}public boolean getNetState(){return netState.getNetState();} }具体使用 //-------在线---- NetStateContext.getInstance().setNetState(new OnLineState()); System.out.println(当前在线状态NetStateContext.getInstance().getNetState()); //-------离线---- NetStateContext.getInstance().setNetState(new OffLineState()); System.out.println(当前在线状态NetStateContext.getInstance().getNetState()); 输出 这样代码就看起来清晰多了而且状态的管理也不用去开辟内存存储了。在实际开发中状态模式的使用对我来说还是比较多的。 四总结 状态模式的关键点在于不同的状态下对于同一行为有不同的响应这其实就是一个将if-else替换的具体示例。当然并不是任何出现if-else的地方都应该通过状态模式重构。一定要结合实际的场景来综合评估。 优点状态模式将所有与一个特定的状态相关的行为都放入一个状态对象中它提供了一个更好的方法来组织与特定状态相关的代码将繁琐的状态判断转换成结构清晰的状态类族在避免代码膨胀的同时也保证了可扩展性与可维护性。 缺点状态模式的使用必然会增加类和对象的个数。 参考文献Android源码设计模式与解析第二版
http://www.eeditor.cn/news/124965/

相关文章:

  • 网站关键词的选择广告公司手机网站模板
  • 主要的网站开发技术建网页和网站的区别
  • 网站源码下载后怎么用网络营销题库及答案2020
  • 竞猜网站开发家具设计与工程就业前景
  • 在线网站备份免费心理咨询
  • 互动平台下载南阳网站优化
  • 网站信用建设应该用什么技术贵阳网页设计培训
  • 网页制作视频的网站建设怎么做关于梦想的网站免费的
  • 网站整合discuz网站建设哪里有
  • 网站美工设计公司电话互联网平台推广是什么意思
  • 网站的站长是什么意思wordpress 仪表盘裁剪图片
  • 学校的网站怎么做c# 手机版网站开发
  • 做网站能不备案么南京做网站xjrkj
  • 网站设置合理的内链机制免费开发游戏的软件
  • 网站建设对比云南网站建设哪家便宜
  • 佛山网站改版专做脚本的网站
  • 潍坊网站关键词推广中商外贸app
  • 汽车4s店网站建设方案平面设计学徒
  • 网站资源做缓存成都网站建设四川冠辰网站建设
  • 常熟专业网站建设网页美工设计什么
  • wordpress网站管理系统网站302错误
  • 郑州网站优化公司排名wordpress程序重装
  • 深圳建设网官方网站深圳市工程建设交易中心服务主页
  • 做的比较好的时尚网站网页升级访问更新狼
  • 电商类网站开发项目流程网站建设相关工作
  • 自己做的网站会被黑吗wordpress支付宝双功能接口插件
  • 怎样在网站上做推广网页布局技术有哪些
  • 网站推广软文甄选天天软文影盟自助网站建设
  • 长沙网站建设公司哪家好收费网站建设视频教程免费下载
  • 成都 网站设计HTML网站建设课程