当前位置: 首页 > 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.pierceye.com/news/576069/

相关文章:

  • 网站如何适应屏幕做网站时无法上传图片
  • 网站的橱窗怎么做嘉兴住房和城乡建设厅网站
  • 吉林省城乡建设官方网站163企业邮箱登录入口官网
  • 做网站参考文献某企业网站建设方案2000字
  • 网站托管哪家好织梦购物网站整站源码
  • 怎么做网站的优化排名wordpress的目录结构(一)
  • 个人可以做公益网站吗美食杰网站的建设目的
  • 宿迁公司企业网站建设《网站基础建设-首保》
  • 做全屏式网站尺寸是多大国外虚拟主机 两个网站
  • 黑龙江建设网站招聘广西住房和城乡建设厅培训中心官方网站
  • 做网站客户最关心的是什么制作网页原型的目的
  • 电子商务网站建设工具河南安阳吧
  • 南通网站建设公司哪个好肯德基的网站建设
  • 高端大气网站源码wordpress做双语网站
  • 360网站推广东莞凤岗
  • 公司网站高端网站建设赣州做网站多少钱
  • dw做网站怎么发布建设银行官方网站登录入口
  • 怎样查看网站建设时间免费外贸自建网站
  • 网站备案注销原因网站建设入账
  • 番禺做网站哪家好wordpress 样式引用
  • 网站研发进度表下载网站建设亿码酷适合5
  • 对网站域名销户怎么做舆情监控都有哪些内容
  • 南宁做网站优化企业网站开发合同
  • 网站做京东联盟公司注册网上核名入口
  • jsp做的零食网站下载一分钟做网站
  • 营销网站竞品分析报告上海平面网站
  • 网站建设 邦机票网站制作
  • 网站开发从整体上用vps刷网站流量要怎么做
  • 搭建一个网站 优帮云网站无法访问的原因
  • 卖印花图案设计网站北京管庄网站建设公司