当前位置:首页 > 设计模式 > 正文内容

状态模式

canca19年前 (2007-03-26)设计模式422
//状态模式
//CopyRight(C) CAnca software Office.2006
//Created by CAnca.
//说明:将状态封装成一个独立的类.状态父类中的方法是状态管理器的方法.
//适用于多分支判断,例:画图软件.选择某种工具,有不同的效果出现.
public class StateMode{
 public static void main(String[] args){
  // Setup context in a state  
       StateManager c = new StateManager(new ConcreteStateA()); 
  
     // Issue requests, which toggles state  
       c.Request(); 
       c.Request();
       
       c.setState(new ConcreteStateB());
       c.Request(); 
       c.Request(); 
 }
}
//State
abstract class State{
 abstract void HandleRequest(StateManager m); 
}
class ConcreteStateA extends State{
 public void HandleRequest(StateManager m){
  m.setState(new ConcreteStateB()); 
 }
}
class ConcreteStateB extends State{
 public void HandleRequest(StateManager m){
  m.setState(new ConcreteStateA()); 
 }
}
//State Manager
class StateManager{
 private State state;
 public StateManager(State state){
  this.state = state;
 }
 public void setState(State state){
  this.state = state;
  System.out.println("State: " + state.getClass().getName()); 
 }
 public State getState(){
  return this.state;
 }
 public void Request(){
  state.HandleRequest(this);
 }
}


扫描二维码推送至手机访问。

版权声明:本文由Ant.Master's Blog发布,如需转载请注明出处。

本文链接:https://iant.work/post/647.html

标签: 设计模式
分享给朋友:
返回列表

上一篇:中介者模式

没有最新的文章了...

“状态模式” 的相关文章

抽象工厂模式

//抽象工厂模式//Copyright CAnca Software office//Created by CAnca.2006public class AbstractFactory{ public static void main(String[] args){  ...

单例模式

//CopyRight CAnca Software Office. 2006//Created by CAnca. import java.util.*; public class singletonMode{ public static void main(String[] args)...

工厂方法模式

//工厂方法模式:现实例子//CopyRight(C)CAnca Software Office. 2006//Created by CAnca. import java.util.*; public class Real_World_Example{ public static void...

建造者模式

//建造者模式//CopyRight(C)CAnca Software Office.//Created by CAnca. import java.util.*; public class BuilderMode{ public static void main(String[] arg...

原型模式

//原型模式//CopyRight(C) CAnca Software Office.2006//Created by CAnca. public class PrototypeMode{ public static void main(String[] args){  ...

代理模式

//代理模式--真实例子//CopyRight(C)CAnca Software Office.2006//Created by CAnca.   public class ProxyMode_RealWorld{     public static void...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。