2021年7月28日星期三

状态模式(学习笔记)

  1. 意图

  7. 实现

  实现State模式时的考虑:

  1) 谁定义状态转换?     State模式不指定哪个参与者定义状态转换准则。如果该准则是固定的,那么它们可在Context中完全实现。然后若让State子类自身指定它们的后继者状态以及何时进行转换,通常更加灵活。更合适。这需要Context增加一个接口,让State对象显式的设定Context的当前状态。用这种方法分散转换逻辑可以很容易地定义新的State子类来修改和扩展该逻辑。这样做有一个缺点,一个State子类至少拥有一个其他子类的信息,这就在各子类之间产生了依赖

  2) 创建和销毁State对象  何时创建State对象?以及何时销毁他们? 是需要时再创建State对象,并随后销毁他们还是,提前创建它们并且始终不销毁它们。当要进入的状态是运行时不可知的,并且上下文不经常改变时,用第一种较为合适。如果State对象存储了大量信息,当状态改变很频繁时,第二种方法较好  

  8. 与其他模式的关系

  • 状态可被视为策略的扩展。两者都基于组合机制:它们都通过将部分工作委派给 "帮手" 对象来改变其在不同情景下的行为。策略使得这些对象相互之间完全独立,它们不知道其他对象的存在。但状态模式没有限制具体状态之间的依赖,且允许它们自行改变在不同情景下的状态

  9. 已知应用  

  使用示例:在J......

原文转载:http://www.shaoqun.com/a/901607.html

跨境电商:https://www.ikjzd.com/

海淘贝:https://www.ikjzd.com/w/1726

启明星:https://www.ikjzd.com/w/1436

ishare:https://www.ikjzd.com/w/2308


1.意图  7.实现  实现State模式时的考虑:  1)谁定义状态转换?State模式不指定哪个参与者定义状态转换准则。如果该准则是固定的,那么它们可在Context中完全实现。然后若让State子类自身指定它们的后继者状态以及何时进行转换,通常更加灵活。更合适。这需要Context增加一个接口,让State对象显式的设定Context的当前状态。用这种方法分散转换逻辑可以很容易地定义新的St
亚马逊 海外购:https://www.ikjzd.com/w/998
在澳门买东西能不能用人民币?能直接刷内地的银行卡吗?:http://www.30bags.com/a/404029.html
在澳门葡京娱乐场要门票吗?要的话多少钱?:http://www.30bags.com/a/404382.html
在澳门威尼斯人度假村吃午饭贵吗?:http://www.30bags.com/a/404350.html
在澳门有哪些好吃的?哪些特色美食?:http://www.30bags.com/a/404385.html
男朋友让我张开腿给他吃 男朋友喜欢㖭我全过程:http://lady.shaoqun.com/a/256939.html
村长把小娥压在玉米地 又粗又大的机巴好爽:http://lady.shaoqun.com/a/247046.html
男友喜欢听我叫越叫越厉害 男朋友舌头伸进去吃小豆豆:http://lady.shaoqun.com/m/a/247218.html
亚马逊新手如何开店?亚马逊新手适合上什么产品:https://www.ikjzd.com/articles/146984
关于使用 Royal Mail 配送服务的有效追踪率要求的提醒:https://www.ikjzd.com/articles/146979
亚马逊提升关键词排名的方法,亚马逊提升关键词排名多久更新一次:https://www.ikjzd.com/articles/146982
TikTok广告:维密的TikTok广告标签挑战:https://www.ikjzd.com/articles/146977

没有评论:

发表评论