定义:当一个对象的内在状态改变时允许改变其行为,这个对象看起来像改变了其类
使用场景:在一个App中,用户做出的操作会根据当前状态,如处于未登录和登录,则做出相应的反应.
public interface Operation {
void zan();
void collect();
void read();
}
public class LoginStatus implements Operation {
@Override
public void zan() {
//zan
}
@Override
public void collect() {
//collect
}
@Override
public void read() {
//read
}
}
public class UnLoginStatus implements Operation{
@Override
public void zan() {
//go to login
}
@Override
public void collect() {
//go to login
}
@Override
public void read() {
//read
}
}
public class APP {
Operation operation;
public void setOperation(Operation operation) {
this.operation = operation;
}
void read(){
operation.read();
}
void zan(){
operation.zan();
}
void collect(){
operation.collect();
}
void login(){
//after login
setOperation(new LoginStatus());
}
void logout(){
//after logout
setOperation(new UnLoginStatus());
}
}
在多个状态下,不同状态下交给不同的类处理,也是典型的依赖倒置.跟策略模式一样,这也是面向接口编程的体现
下面是状态模式的UML图,是不是跟策略模式非常�相似
![](https://img.haomeiwen.com/i2826549/dc19f077325ef5a0.gif)
网友评论