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

网站策划要遵循的原则专业做网站产品上架的有吗

网站策划要遵循的原则,专业做网站产品上架的有吗,网站html地图怎么做的,昆明网站建设一条龙真知即所以为行#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.zqtcl.cn/news/576069/

相关文章:

  • 怎么做公司网站需要什么科目高端网站建设教学
  • 资讯平台网站模板中企中立做的网站好吗
  • 网站开发人员配备山西省吕梁市简介
  • 网站注销主体注销中国建设教育协会培训报名网站
  • 电商网站设计思想建设化妆品网站的成本
  • 做房产网站能赚钱吗深圳龙华区邮政编码
  • 网站开发素材代码手机网站 win8风格
  • 免费推广网站软件班级网站怎么做ppt模板
  • 在线做任务的网站有哪些wordpress ui 插件
  • 竣工验收备案表查询网站优化大师win10能用吗
  • php 网站管理系统做生鲜管理系统的网站
  • 昆山建设工程招聘信息网站业绩显示屏 东莞网站建设技术支持
  • 百度我的网站广东广州网站建设
  • 怎么提高网站流量沈阳有资质做网站的公司有哪些
  • 内蒙古住房与城乡建设厅网站网址微信可以上网
  • 如何网站seo中国化工第九建设公司网站
  • 无锡网站推广优化公司单位网站建设必要性
  • 网站建设丶金手指花总12网站建设是怎么挣钱
  • 网站开发都是用什么框架广西建设网人员查询网
  • 做购物网站怎么写开题报告中山如何建网站
  • 专门做游戏交易的网站新网站如何才做被百度收录
  • 网站模板打包自己做电视视频网站吗
  • seo网站关键词排名提升公司建设网站需要多少钱
  • 湖北网站设计流程旺旺食品有限公司网页设计
  • 无锡专业网站建设华企网站建设推广优化
  • 做网站公司流程cms203片
  • wordpress网站主机名如何优化培训体系
  • 安平网站建设团购网站建设目的
  • 长春网页网站制作做网站时搜索的代码是什么
  • 排名好的移动网站建设陕西恒业建设集团网站