javax.faces.lifecycle.LifeCycle实现了状态模式,其execute()方法的行为取决于JSF生命周期的当前阶段(即状态)。

添加依赖:


<dependency>             <groupId>com.sun.faces</groupId>             <artifactId>jsf-api</artifactId>             <version>1.2</version>         </dependency>


LifeCycle:


package javax.faces.lifecycle;  import javax.faces.FacesException; import javax.faces.context.FacesContext; import javax.faces.event.PhaseListener;  public abstract class Lifecycle {     public Lifecycle() {     }      public abstract void addPhaseListener(PhaseListener var1);      public abstract void execute(FacesContext var1) throws FacesException;      public abstract PhaseListener[] getPhaseListeners();      public abstract void removePhaseListener(PhaseListener var1);      public abstract void render(FacesContext var1) throws FacesException; }


与策略模式的比较:


  1. 状态模式与策略模式的类图完全一样,但是两个模式的意图和用法都不同。
  2. 策略模式允许客户端根据需要动态切换算法。
  3. 状态模式的状态对象则是不允许客户感知的,状态的变化由客户请求的操作驱动,属于模式内部处理部分。