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; }
与策略模式的比较:
- 状态模式与策略模式的类图完全一样,但是两个模式的意图和用法都不同。
- 策略模式允许客户端根据需要动态切换算法。
- 状态模式的状态对象则是不允许客户感知的,状态的变化由客户请求的操作驱动,属于模式内部处理部分。