java_设计模式_状态模式_State Pattern(2016-08-16)

时间:2022-09-08 21:19:35

定义

  当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。

类图:

java_设计模式_状态模式_State  Pattern(2016-08-16)

状态模式所涉及到的角色有:

  ●  环境(Context)角色,也成上下文:定义客户端所感兴趣的接口,同时维护一个具体处理当前状态的实例对象。  
  ●  抽象状态(State)角色:定义一个接口,用以封装环境(Context)对象的一个特定的状态所对应的行为。 
  ●  具体状态(ConcreteState)角色:每一个具体状态类都实现了环境(Context)的一个状态所对应的行为。
 
状态处理对象的创建和销毁
  ① 当需要使用状态对象的时候创建,使用完后就销毁。
  ② 提前创建它们并永不销毁(单例)。
  ③ 采用延时加载 +  缓存的方式。就是当第一次使用的时候创建,使用完后并不销毁而是把它缓存起来,下一次使用时,从缓存中获取对象,并由缓存框架来销毁状态处理对象。
 

状态的维护和转换

  维护状态的数据,给状态设置不同的状态值;状态的转换,指的是根据状态的变化来选择不同的状态处理对象。

有两个地方可以进行状态的维护和转换:

  ① 在Context 中。

  ② 在状态的处理类中。

如何选择者两种方式:

  ● 如果状态转换的规则是一定的,一般不需要进行什么扩展规则,那么就适合在上下文中统一进行状态的维护。

  ● 如果状态的转换取决于前一个状态动态处理的结果,或者是依赖外部数据,为了增强灵活性,这种情况下,一般式在状态处理类中进行状态的维护。

使用场景:

  考虑一个在线投票系统的应用,要实现控制同一个用户只能投一票,如果一个用户反复投票,而且投票次数超过5次,则判定为恶意刷票,要取消该用户投票的资格,当然同时也要取消他所投的票;如果一个用户的投票次数超过8次,将进入黑名单,禁止再登录和使用系统。

  要使用状态模式实现,首先需要把投票过程的各种状态定义出来,根据以上描述大致分为四种状态:正常投票、反复投票、恶意刷票、进入黑名单。然后创建一个投票管理对象(相当于Context)。

java_设计模式_状态模式_State  Pattern(2016-08-16)

 
◆ 在Context 中进行状态的维护和转换
/**
* 投票状态接口 <br>
* 抽象状态(State)角色
*/
public interface VoteState { /**
* 处理状态对应的行为
* @param user 投票人
* @param voteItem 投票项
* @param manager 投票上下文,用来实现状态对应的功能处理的时候,可以回调上下文的数据
*/
public void vote(String user, String voteItem, VoteManager manager);
} /**
* 正常投票状态 <br>
* 具体状态(ConcreteState)角色
*/
public class NormalVoteState implements VoteState { @Override
public void vote(String user, String voteItem, VoteManager manager) {
manager.getMapVote().put(user, voteItem);
System.out.println("恭喜你投票成功!");
}
} /**
* 反复投票状态 <br>
* 具体状态(ConcreteState)角色
*/
public class RepeatVoteState implements VoteState { @Override
public void vote(String user, String voteItem, VoteManager manager) {
System.out.println("请不要重复投票!");
}
} /**
* 恶意刷票状态 <br>
* 具体状态(ConcreteState)角色
*/
public class SpiteVoteState implements VoteState { @Override
public void vote(String user, String voteItem, VoteManager manager) {
String s = manager.getMapVote().get(user);
if(s != null){
manager.getMapVote().remove(user);
}
System.out.println("你有恶意刷票行为,取消投票资格。");
}
} /**
* 黑名单状态 <br>
* 具体状态(ConcreteState)角色
*/
public class BlackVoteState implements VoteState { @Override
public void vote(String user, String voteItem, VoteManager manager) {
System.out.println("进入黑名单,将禁止登陆和使用本系统。");
}
} /**
* 投票管理对象 <br>
* 环境(Context)角色
*/
public class VoteManager { /**
* 持有状态处理对象
*/
private VoteState state = null;
/**
* 记录用户投票的结果,Map<String,String>对应Map<用户名,投票的选项>
*/
private Map<String, String> mapVote = new HashMap<String, String>();
/**
* 记录用户投票次数,Map<String,Integer> 对应Map<用户名,投票的次数>
*/
private Map<String, Integer> mapVoteCount = new HashMap<String, Integer>();
/**
* 获取记录用户投票结果的Map
* @return 记录用户投票结果的Map
*/
public Map<String, String> getMapVote() {
return mapVote;
}
/**
* 投票
* 在Context 中进行状态的维护和转换
* @param user 投票人
* @param voteItem 投票的选项
*/
public void vote(String user, String voteItem){
Integer oldVoteCount = mapVoteCount.get(user);
if(oldVoteCount == null){
oldVoteCount = 0;
}
oldVoteCount++;
mapVoteCount.put(user, oldVoteCount);
if(oldVoteCount == 1){
state = new NormalVoteState();
}else if(oldVoteCount > 1 && oldVoteCount < 5){
state = new RepeatVoteState();
}else if(oldVoteCount >= 5 && oldVoteCount < 8){
state = new SpiteVoteState();
}else if(oldVoteCount >= 8){
state = new BlackVoteState();
}
state.vote(user, voteItem, this);
}
} /**
* 客户端<br>
*/
public class Client { public static void main(String[] args) {
VoteManager manager = new VoteManager();
for(int i = 0; i < 8; i++){
manager.vote("JOE", "A");
}
}
}

◆ 在状态处理类中进行状态的维护和转换

/**
* 投票状态接口 <br>
* 抽象状态(State)角色
*/
public interface VoteState { /**
* 处理状态对应的行为
* @param user 投票人
* @param voteItem 投票项
* @param manager 投票上下文,用来实现状态对应的功能处理的时候,可以回调上下文的数据
*/
public void vote(String user, String voteItem, VoteManager manager);
} /**
* 正常投票状态 <br>
* 具体状态(ConcreteState)角色
*/
public class NormalVoteState implements VoteState { @Override
public void vote(String user, String voteItem, VoteManager manager) {
manager.getMapVote().put(user, voteItem);
System.out.println("投票成功!");
manager.getMapState().put(user, new RepeatVoteState());//在状态处理类中进行状态的维护和转换
}
} /**
* 反复投票状态 <br>
* 具体状态(ConcreteState)角色
*/
public class RepeatVoteState implements VoteState { @Override
public void vote(String user, String voteItem, VoteManager manager) {
System.out.println("请不要重复投票。");
if(manager.getMapVoteCount().get(user) >= 4){
manager.getMapState().put(user, new SpiteVoteState());//在状态处理类中进行状态的维护和转换
}
}
} /**
* 恶意刷票状态 <br>
* 具体状态(ConcreteState)角色
*/
public class SpiteVoteState implements VoteState { @Override
public void vote(String user, String voteItem, VoteManager manager) {
String s = manager.getMapVote().get(user);
if(s != null){
manager.getMapVote().remove(user);
}
System.out.println("你有恶意刷票行为,取消投票资格。");
if(manager.getMapVoteCount().get(user) >= 7){
manager.getMapState().put(user, new BlackVoteState());//在状态处理类中进行状态的维护和转换
}
}
} /**
* 黑名单状态 <br>
* 具体状态(ConcreteState)角色
*/
public class BlackVoteState implements VoteState { @Override
public void vote(String user, String voteItem, VoteManager manager) {
System.out.println("你进入了黑名单。");
}
} /**
* 投票管理对象 <br>
* 环境(Context)角色
*/
public class VoteManager { /**
* 记录当前每个用户对应的状态处理对象,每个用户当前的状态是不同的
* Map<String, VoteState>对应Map<用户名,当前对应的状态处理对象>
*/
private Map<String, VoteState> mapState = new HashMap<String, VoteState>();
/**
* 记录用户投票的结果,Map<String,String>对应Map<用户名,投票的选项>
*/
private Map<String, String> mapVote = new HashMap<String, String>();
/**
* 记录用户投票次数,Map<String,Integer> 对应Map<用户名,投票的次数>
*/
private Map<String, Integer> mapVoteCount = new HashMap<String, Integer>();
/**
* 获取记录用户投票结果的Map
* @return 记录用户投票结果的Map
*/
public Map<String, String> getMapVote() {
return mapVote;
}
/**
* 获取记录当前每个用户对应的状态处理对象
* @return
*/
public Map<String, VoteState> getMapState() {
return mapState;
}
/**
* 获取记录每个用户对应的投票次数的Map
* @return
*/
public Map<String, Integer> getMapVoteCount() {
return mapVoteCount;
} /**
* 投票
* @param user 投票人
* @param voteItem 投票的选项
*/
public void vote(String user, String voteItem){
Integer oldVoteCount = mapVoteCount.get(user);
if(oldVoteCount == null){
oldVoteCount = 0;
}
oldVoteCount++;
mapVoteCount.put(user, oldVoteCount); VoteState state = mapState.get(user);
if(state == null){
state = new NormalVoteState();
}
state.vote(user, voteItem, this);
}
} /**
* 客户端<br>
*/
public class Client { public static void main(String[] args) {
VoteManager manager = new VoteManager();
for(int i = 0; i < 8; i++){
manager.vote("JOE", "A");
}
}
}

 认识状态模式

  ●  状态和行为

  所谓对象的状态,通常指的就是对象实例的属性的值;而行为指的就是对象的功能,再具体点说,行为大多可以对应到方法上。

  状态模式的功能就是分离状态的行为,通过维护状态的变化,来调用不同状态对应的不同功能。也就是说,状态和行为是相关联的,它们的关系可以描述为:状态决定行为

  由于状态是在运行期被改变的,因此行为也会在运行期根据状态的改变而改变。

  ●  行为的平行性

  注意平行线而不是平等性。所谓平行性指的是各个状态的行为所处的层次是一样的,相互独立的、没有关联的,是根据不同的状态来决定到底走平行线的哪一条。行为是不同的,当然对应的实现也是不同的,相互之间是不可替换的。

  aaarticlea/png;base64,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" alt="" />

  而平等性强调的是可替换性,大家是同一行为的不同描述或实现,因此在同一个行为发生的时候,可以根据条件挑选任意一个实现来进行相应的处理。

  aaarticlea/png;base64,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" alt="" />

  大家可能会发现状态模式的结构和策略模式的结构完全一样,但是,它们的目的、实现、本质却是完全不一样的。还有行为之间的特性也是状态模式和策略模式一个很重要的区别,状态模式的行为是平行的,不可相互替换的;而策略模式的行为是平等性的,是可以相互替换的

  ●   环境和状态处理对象

  在状态模式中,环境(Context)是持有状态的对象,但是环境(Context)自身并不处理跟状态相关的行为,而是把处理状态的功能委托给了状态对应的状态处理类来处理。

  在具体的状态处理类中经常需要获取环境(Context)自身的数据,甚至在必要的时候会回调环境(Context)的方法,因此,通常将环境(Context)自身当作一个参数传递给具体的状态处理类。

  客户端一般只和环境(Context)交互。客户端可以用状态对象来配置一个环境(Context),一旦配置完毕,就不再需要和状态对象打交道了。客户端通常不负责运行期间状态的维护,也不负责决定后续到底使用哪一个具体的状态处理对象。

适用场景:

  1.一个对象的行为取决于它的状态,并且它必须在运行时刻根据状态改变它的行为。

  2.一个操作中含有庞大的多分支结构,并且这些分支决定于对象的状态。

参考粘贴来自:

http://www.cnblogs.com/java-my-life/archive/2012/06/08/2538146.html

http://joe5456536.blog.163.com/blog/static/85374773201192252829941/

http://www.cnblogs.com/BenWong/archive/2012/12/12/2813982.html
 

java_设计模式_状态模式_State Pattern(2016-08-16)的更多相关文章

  1. java&lowbar;设计模式&lowbar;组合模式&lowbar;Composite Pattern(2016-08-12)

    概念: 组合模式(Composite Pattern)将对象组合成树形结构以表示“部分-整体”的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性. 有时候又叫做部分-整体模式,它使我们树 ...

  2. java&lowbar;设计模式&lowbar;命令模式&lowbar;Command Pattern(2016-08-09)

    理解还不到位,先窜出来.等过一阵子再看,再理解. 定义:将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能. 类型:行为类模式 类 ...

  3. java&lowbar;设计模式&lowbar;工厂模式&lowbar;Factory Pattern(2016-08-04)

    工厂模式主要是为创建对象提供了接口.工厂模式按照<Java与模式>中的提法分为三类: (1)简单工厂(Simple Factory)模式,又称静态工厂方法模式(Static Factory ...

  4. java&lowbar;设计模式&lowbar;迭代器模式&lowbar;Iterator Pattern(2016-08-12)

    迭代子(Iterator)模式又叫游标(Cursor)模式,是对象的行为模式. 定义:提供一种方法访问一个容器对象中各个元素,而又不暴露该对象的内部细节. 类型:行为类模式 类图: 如果要问java中 ...

  5. java&lowbar;设计模式&lowbar;外观模式&lowbar;Facade Pattern(2016-08-09)

    外观模式/门面模式 1.概念 为子系统中的一组接口提供一个统一接口.Facade模式定义了一个高层接口,这个接口使得这子系统更容易使用. 2.UML 由于外观模式的结构图过于抽象,因此把它稍稍具体点. ...

  6. java&lowbar;设计模式&lowbar;策略模式&lowbar;Strategy pattern(2016-07-15)

    感受:将算法从方法级别,提升到类级别.之后利用java多态,来切换不同的算法实现不同的功能. 在阎宏博士的<JAVA与模式>一书中开头是这样描述策略(Strategy)模式的: 策略模式属 ...

  7. 乐在其中设计模式&lpar;C&num;&rpar; - 状态模式&lpar;State Pattern&rpar;

    原文:乐在其中设计模式(C#) - 状态模式(State Pattern) [索引页][源码下载] 乐在其中设计模式(C#) - 状态模式(State Pattern) 作者:webabcd 介绍 允 ...

  8. 二十四种设计模式:状态模式&lpar;State Pattern&rpar;

    状态模式(State Pattern) 介绍允许一个对象在其内部状态改变时改变它的行为.对象看起来似乎修改了它所属的类. 示例有一个Message实体类,对它的操作有Insert()和Get()方法, ...

  9. &lbrack;设计模式&rsqb; 20 状态模式 State Pattern

    在GOF的<设计模式:可复用面向对象软件的基础>一书中对状态模式是这样说的:允许一个对象在其内部状态改变时改变它的行为.对象看起来似乎修改了它的类.状态模式的重点在于状态转换,很多时候,对 ...

随机推荐

  1. BZOJ1492&colon; &lbrack;NOI2007&rsqb;货币兑换Cash

    设$x_j$,$y_j$为第$j$天能买的A,B券数量,$f_i$为第$i$天的最大收益.$f_i=\max_{1\le j<i}a_ix_j+b_iy_j$,最大化$f_i$即找一个点$(x_ ...

  2. Android Studio能干什么

    建立系统工具包可以用来生成,测试,运行您的应用程序和软件包.构建系统是独立于Android的工作室,所以你可以调用它的Android的工作室或从命令行.在你写你的应用程序,你可以使用编译系统的特点: ...

  3. 【wikioi】1922 骑士共存问题(网络流&sol;二分图匹配)

    用匈牙利tle啊喂?和网络流不都是n^3的吗(匈牙利O(nm), isap O(n^2m) 但是isap实际复杂度很优的(二分图匹配中,dinic是O(sqrt(V)*E),不知道isap是不是一样. ...

  4. gomoblie flappy 源码分析:图片素材和大小的处理

    flappy的源码可以在 https://github.com/golang/mobile 看到.具体在 https://github.com/golang/mobile/tree/master/ex ...

  5. MVC验证12-使用DataAnnotationsExtensions对整型、邮件、最小值、文件类型、Url地址等验证

    原文:MVC验证12-使用DataAnnotationsExtensions对整型.邮件.最小值.文件类型.Url地址等验证 本文体验来自http://dataannotationsextension ...

  6. TOGAF架构能力框架之架构委员会和架构合规性

    TOGAF架构能力框架之架构委员会和架构合规性 3. 架构委员会 正如前面所说,一个用来对架构治理策略的实现进行监督的跨组织的架构委员会是架构治理策略成功的主要要素之一.架构委员会应该能够代表所有主要 ...

  7. 会话管理---Cookie与Session

    会话可简单理解为:用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话. 保存会话数据的两种技术:Cookie,Session Cookie是客户端技术, ...

  8. &lbrack;mstsc&rsqb;解决win8 win10 平板无法被mstsc连接的问题

    问题如下: https://answers.microsoft.com/zh-hans/windows/forum/windows_8-performance/win8%E6%97%A0%E6%B3% ...

  9. cocos2dx JS layuot纯代码实现背景颜色渐变

    // view._partyBtnClassify.setBackGroundColorType(ccui.Layout.BG_COLOR_GRADIENT);// view._partyBtnCla ...

  10. 深入浅出的webpack构建工具---webpack3版本的CommonsChunkPlugin详解&lpar;六&rpar;

    阅读目录 一:什么是CommonsChunkPlugin, 它的作用是什么? 二:webpack3中CommonsChunkPlugin配置项及含义? 回到顶部 一:什么是CommonsChunkPl ...