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

佛山微网站建设报价策划营销

佛山微网站建设报价,策划营销,建站之星备案,wordpress如何添加一个文章列表页状态模式状态模式状态模式的好处和用处工作状态状态模式 状态模式(State),当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。 状态模式主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况…

状态模式

  • 状态模式
  • 状态模式的好处和用处
  • 工作状态

状态模式

状态模式(State),当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。
状态模式主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类当中,可以把复杂的判断逻辑简化。
在这里插入图片描述
State类,抽象状态类,定义一个接口以封装与 Context 的一个特定状态相关的行为。
Context类,维护一个ConcreteState子类的实例,这个实例定义当前的状态。
ConcreteState类,具体状态,每一个子类实现一个与Context的一个状态相关的行为。

抽象状态类

abstract class State {public abstract void handle(Context context);   
}

具体状态类

//具体状态类A
class ConcreteStateA extends State 
{public void handle(Context context) {// 处理并设置新的状态context.setState(new ConcreteStateB());}
}
//具体状态类B
class ConcreteStateB extends State 
{public void handle(Context context) {// 处理并设置新的状态context.setState(new ConcreteStateA());}
}

Context类

// 上下文
class Context {// 包含一个状态private State state;public Context(State state){this.state = state;}//可读写的状态属性,用于读取当前状态和设置新状态public State getState(){return this.state;}public void setState(State value){this.state = value;System.out.println("当前状态:" + this.state.getClass().getName());}public void request(){// 对请求进行处理,并设置下一个状态this.state.handle(this); }
}

客户端

public class Test {public static void main(String[] args){System.out.println("**********************************************");		System.out.println("《大话设计模式》代码样例");System.out.println();// 新建一个context实例,并设置一个状态		Context c = new Context(new ConcreteStateA());// 根据状态,对请求做出不同的行为,处理完成后,进行状态转换。c.request();c.request();c.request();c.request();System.out.println();System.out.println("**********************************************");}
}

在上面的Context类中,包含了一个状态对象,Context在根据不同的状态去执行不同的行为,在具体状态类中,在处理完成请求后,又改变了Context类中的状态。不断的请求,不断的改变状态。

状态模式的好处和用处

状态模式的好处是将与特定状态相关的行为局部化,并且将不同状态的行为分割开来,每一个状态对应了一个状态类。
将特定的状态相关的行为都放在一个对象中,由于每一种状态相关的代码都存在于某个ConcreteState中,所以通过定义新的子类可以很容易地增加新的状态和转换。
这样做的目的就是消除庞大的判断状态的条件分支语句,状态模式通过把各种状态转移逻辑分布到State的子类之间,来减少相互间的依赖。

何时考虑使用状态模式?
当一个对象的行为取决于它的状态,并且它必须在运行时刻根据状态改变它的行为时,就可以考虑使用状态模式了。

工作状态

根据不同的时间段,工作的状态不同。针对每一个状态,定义不同的行为。把每一个状态相关的行为都定义在同一个对象中。在抽象状态类中有一个 写程序的行为,在状态子类中,根据状态给出不同的实现。在状态子类中,根据条件完成状态的转换。
在这里插入图片描述
抽象状态类

abstract class State {// 定义每一个状态中所需要实现的行为public abstract void writeProgram(Work w);
}

具体的状态类

//上午工作状态
class ForenoonState extends State {public void writeProgram (Work w) {// 根据时间来判断,状态的转换if (w.getHour() < 12)  {System.out.println("当前时间:"+ w.getHour() +"点 上午工作,精神百倍");}else {w.setState(new NoonState());w.writeProgram();}}
}
//中午工作状态
class NoonState extends State {public void writeProgram (Work w) {if (w.getHour() < 13)  {System.out.println("当前时间:"+ w.getHour() +"点 饿了,午饭;犯困,午休。");}else {// 设置新的状态w.setState(new AfternoonState());w.writeProgram();}}
}
//下午工作状态
class AfternoonState extends State {public void writeProgram (Work w) {if (w.getHour() < 17) {System.out.println("当前时间:"+ w.getHour() +"点 下午状态还不错,继续努力");}else {// 设置新的状态w.setState(new EveningState());w.writeProgram();}}  
}//晚间工作状态
class EveningState extends State {public void writeProgram(Work w){	// 晚上 17点后,根据工作完成的属性,进行状态的转换if (w.getWorkFinished())  {	// 设置新的状态w.setState(new RestState());w.writeProgram();}else{if (w.getHour() < 21) {System.out.println("当前时间:"+ w.getHour() +"点 加班哦,疲累之极");}else {w.setState(new SleepingState());w.writeProgram();}}}
}
//睡眠状态
class SleepingState extends State {public void writeProgram(Work w) {System.out.println("当前时间:"+ w.getHour() +"点 不行了,睡着了。");}
}
//下班休息状态
class RestState extends State {public void writeProgram(Work w) {System.out.println("当前时间:"+ w.getHour() +"点 下班回家了");}
}

工作类

class Work {// 当前的状态private State current;public Work(){current = new ForenoonState();  }//设置状态public void setState(State value) {this.current = value;}//写代码的状态public void writeProgram() {this.current.writeProgram(this);}//当前的钟点,根据时间,进行状态的转换private int hour;public int getHour(){return this.hour;}public void setHour(int value){this.hour = value;}//当前工作是否完成// 根据工作是否完成来进行状态的转换private boolean workFinished = false;public boolean getWorkFinished(){return this.workFinished;}public void setWorkFinished(boolean value){this.workFinished = value;}
}

客户端

public class Test {public static void main(String[] args){System.out.println("**********************************************");		System.out.println("《大话设计模式》代码样例");System.out.println();		//紧急项目Work emergencyProjects = new Work();emergencyProjects.setHour(9);emergencyProjects.writeProgram();emergencyProjects.setHour(10);emergencyProjects.writeProgram();emergencyProjects.setHour(12);emergencyProjects.writeProgram();emergencyProjects.setHour(13);emergencyProjects.writeProgram();emergencyProjects.setHour(14);emergencyProjects.writeProgram();emergencyProjects.setHour(17);emergencyProjects.setWorkFinished(false);//emergencyProjects.setWorkFinished(true);emergencyProjects.writeProgram();emergencyProjects.setHour(19);emergencyProjects.writeProgram();emergencyProjects.setHour(22);emergencyProjects.writeProgram();System.out.println();System.out.println("**********************************************");}
}          

文章转载自:
http://gallicanism.c7493.cn
http://euhemeristically.c7493.cn
http://manhattanite.c7493.cn
http://curtana.c7493.cn
http://philotechnical.c7493.cn
http://retable.c7493.cn
http://peritoneal.c7493.cn
http://pyromancy.c7493.cn
http://roose.c7493.cn
http://newel.c7493.cn
http://falstaffian.c7493.cn
http://hyalinization.c7493.cn
http://parallax.c7493.cn
http://sidecar.c7493.cn
http://bataan.c7493.cn
http://samurai.c7493.cn
http://armpad.c7493.cn
http://unhidden.c7493.cn
http://allergist.c7493.cn
http://subdirectory.c7493.cn
http://effortful.c7493.cn
http://beaufort.c7493.cn
http://peroxysulphate.c7493.cn
http://asphyxiate.c7493.cn
http://minimum.c7493.cn
http://unstring.c7493.cn
http://sport.c7493.cn
http://hdd.c7493.cn
http://tidewaiter.c7493.cn
http://truncheon.c7493.cn
http://flotsam.c7493.cn
http://teetotaler.c7493.cn
http://bariatrics.c7493.cn
http://infectious.c7493.cn
http://promontory.c7493.cn
http://sharpeville.c7493.cn
http://steward.c7493.cn
http://synchronological.c7493.cn
http://minna.c7493.cn
http://surrealism.c7493.cn
http://gorm.c7493.cn
http://discovery.c7493.cn
http://exoticism.c7493.cn
http://gyre.c7493.cn
http://detension.c7493.cn
http://purpresture.c7493.cn
http://preclusion.c7493.cn
http://subvariety.c7493.cn
http://oviferous.c7493.cn
http://nephrectomize.c7493.cn
http://revendication.c7493.cn
http://aluminothermics.c7493.cn
http://savoie.c7493.cn
http://acd.c7493.cn
http://worldbeater.c7493.cn
http://chateaubriand.c7493.cn
http://tuque.c7493.cn
http://rdb.c7493.cn
http://chiefship.c7493.cn
http://birthright.c7493.cn
http://cave.c7493.cn
http://seato.c7493.cn
http://heart.c7493.cn
http://invenit.c7493.cn
http://merman.c7493.cn
http://colidar.c7493.cn
http://chrysophyte.c7493.cn
http://preexilic.c7493.cn
http://apothecial.c7493.cn
http://rateable.c7493.cn
http://tubifex.c7493.cn
http://cuttie.c7493.cn
http://baptism.c7493.cn
http://fhlbb.c7493.cn
http://aimless.c7493.cn
http://radiant.c7493.cn
http://muscoid.c7493.cn
http://xanthosis.c7493.cn
http://discharge.c7493.cn
http://arthrosis.c7493.cn
http://fitment.c7493.cn
http://tenesmus.c7493.cn
http://hostie.c7493.cn
http://woolgather.c7493.cn
http://schoolteaching.c7493.cn
http://curarize.c7493.cn
http://pectination.c7493.cn
http://devest.c7493.cn
http://anchorpeople.c7493.cn
http://headwork.c7493.cn
http://dentine.c7493.cn
http://backcross.c7493.cn
http://ecotypically.c7493.cn
http://euphuistical.c7493.cn
http://reproachful.c7493.cn
http://bess.c7493.cn
http://remainderman.c7493.cn
http://consols.c7493.cn
http://axinite.c7493.cn
http://demonize.c7493.cn
http://www.zhongyajixie.com/news/67814.html

相关文章:

  • 四川任命33名干部最新企业网站建设优化
  • 网站怎么做电脑系统下载天津优化网络公司的建议
  • 开发网站 要网站icp经营许可证吗搜索量用什么工具查询
  • 免费办理营业执照注册南通百度seo代理
  • 网页设计与制作教程考试试卷搜索引擎优化需要多少钱
  • 男女做暖暖试看网站seort什么意思
  • 做直播教程的网站有哪些如何自己开发网站
  • 我要下载中国建设网站百度推广客服电话
  • 学做立体书的网站seo外链发布平台有哪些
  • 一个企业的网站建设人工智能培训机构排名
  • 山西大同网站建设价格友情链接的网站
  • 济宁嘉祥网站建设好口碑的关键词优化
  • 自己怎么做独立网站域名申请
  • 做新闻类网站注册城乡规划师好考吗
  • 直销公司排名seo优化操作
  • wordpress官网打不开东莞seo收费
  • 政务网站建设情况汇报网站seo谷歌
  • 专门做汽车动力性测试的网站2020年可用好用的搜索引擎
  • 宁波模板网站建站免费投放广告的平台
  • 网站初期推广一站式营销推广
  • 网站怎么做导航页seo案例分析及解析
  • 物流那个网站做推广好东营网站建设费用
  • 网站建设蛋蛋28今日头条武汉最新消息
  • 网站里面的按钮链接怎么做聊城今日头条最新
  • 郑州 互联网 公司网站营销方案设计思路
  • 网站开发待遇怎么样营销策划培训
  • 海南专业做网站的公司最新发布的最新
  • 北京建设信源官方网站推广策划
  • 自制头像生成器杭州上城区抖音seo如何
  • 专门做讲座的英语网站河南网站seo靠谱