状态模式

canca17年前 (2007-03-26)设计模式280
//状态模式
//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);
 }
}


相关文章

抽象工厂模式

//抽象工厂模式//Copyright CAnca Software office//Created by CAnca.2006public class AbstractFactory{ p...

建造者模式

//建造者模式//CopyRight(C)CAnca Software Office.//Created by CAnca. import java.util.*; public class Buil...

代理模式

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

桥接模式

//桥接模式//CopyRight(C) CAnca Software Office 2006.//Created by CAnca. import java.util.*; public class...

适配器模式

//适配器模式//CopyRight(C)CAnca Software Office.//Created by CAnca. public class AdapterMode{ public...

外观模式

//外观模式//CopyRight(C)CAnca Software Office. 2006//Created by CAnca. public class FacadeMode{ pub...

发表评论

访客

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