设计模式之状态模式

来源:互联网 发布:淘宝奢侈品拍卖真假 编辑:程序博客网 时间:2024/05/22 14:08

用一句话来表述,状态模式把所研究的对象的行为包装在不同的状态对象里,每一个状态对象都属于一个抽象状态类的一个子类。状态模式的意图是让一个对象在其内部状态改变的时候,其行为也随之改变。

public class A {// 持有一个State类型的对象实例private S s;public void setState(S s) {this.s = s;}public void request(String str) {// 转调state来处理s.main(str);}}public interface S {public void main(String str);}public class S1 implements S {@Overridepublic void main(String str) {System.out.println(str);}}public class S2 implements S {@Overridepublic void main(String str) {System.out.println(str);}}

跟策略模式是不是很像?它们的类图是一样的,但意图却完全不一样,策略模式是让用户指定更换的策略行为,而状态模式是状态在满足一定条件下的自动更换,用户无法指定状态,最多只能设置初始状态。

实际使用中去体会他们的不同。

概括下策略模式和状态模式的不同:

策略模式中对象改变时只改变部分方法,状态模式中对象改变时会改变所有方法。