设计模式——状态模式

定义:当一个对象的内在状态改变时允许改变其行为,这个对象看起来像改变了其类

使用场景:在一个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图,是不是跟策略模式非常�相似

573860a9g75c0ec0a22a2&690&690.gif

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容