[设计模式-行为型]状态模式(State)

一句话

在一个类的对象中维护状态的类的对象


概括



解析

STATE—跟MM交往时,一定要注意她的状态哦,在不同的状态时她的行为会有不同,比如你约她今天晚上去看电影,对你没兴趣的MM就会说 “有事情啦”,对你不讨厌但还没喜欢上的MM就会说“好啊,不过可以带上我同事么?”,已经喜欢上你的MM就会说“几点钟?看完电影再去泡吧怎么样?”,当然你看电影过程中表现良好的话,也可以把MM的状态从不讨厌不喜欢变成喜欢哦。
  状态模式:状态模式允许一个对象在其内部状态改变的时候改变行为。这个对象看上去象是改变了它的类一样。状态模式把所研究的对象的行为包装在不同的状态对象里,每一个状态对象都属于一个抽象状态类的一个子类。状态模式的意图是让一个对象在其内部状态改变的时候,其行为也随之改变。状态模式需要对每一个系统可能取得的状态创立一个状态类的子类。当系统的状态变化时,系统便改变所选的子类。


实例

以产品的开发为例,产品会处于不同的开发阶段, 比如开发、测试。

包含的类文件:

产品类 (Product.java)

一个状态的接口(State.java)

两个状态的类(DevState.java,QAState.java)

测试主类(TestMain.java)

/**   
 * @author oscar999   
 * @date 2015-1-8
 * @version V1.0   
 */
package designptn.state;

public class Product {

	private State state;

	public State getState() {
		return state;
	}

	public void setState(State state) {
		this.state = state;
	}

	public String stateMessage() {
		return state.getState();
	}

}

/**   
 * @author oscar999   
 * @date 2015-1-8
 * @version V1.0   
 */
package designptn.state;

public interface State {
	String getState();
}

/**   
 * @author oscar999   
 * @date 2015-1-8
 * @version V1.0   
 */
package designptn.state;

/**
 * @author Administrator
 *
 */
public class DevState implements State {

	@Override
	public String getState() {
		// TODO Auto-generated method stub
		return "Development";
	}

}

/**   
 * @author oscar999   
 * @date 2015-1-8
 * @version V1.0   
 */
package designptn.state;

/**
 * @author Administrator
 *
 */
public class QAState implements State {

	@Override
	public String getState() {
		// TODO Auto-generated method stub
		return "Qulity Test";
	}

}

/**   
 * @author oscar999   
 * @date 2015-1-8
 * @version V1.0   
 */
package designptn.state;

/**
 * @author Administrator
 * 
 */
public class TestMain {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Product product = new Product();
		product.setState(new DevState());
		System.out.println(product.stateMessage());

		System.out.println("==========================");
		product = new Product();
		product.setState(new QAState());
		System.out.println(product.stateMessage());
	}

}






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

oscar999

送以玫瑰,手留余香

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值