zoukankan      html  css  js  c++  java
  • 设计模式_状态模式

    模式:行为型模式
    优点:

    1. 随着状态的改变,那么其行为也被改变了。
    2. 符合开闭原则。例如下面的例子,我们可以不必修改上下文就可以更改其行为;可以随时增加 state 或减少。
    3. 条件、分支语句的代替者。

    缺点:

    1. 多种状态造成系统类的增多。

    ✨ 代码
    上下文

    public interface Context {
        public void setState(State state);
        public void print();
    }
    
    

    上下文实现

    public class DefaultContext implements Context {
    
        private State state;
    
        public State getState() {
            return state;
        }
    
        public void setState(State state) {
            this.state = state;
        }
    
        @Override
        public void print() {
            this.state.print();
        }
    }
    
    

    状态抽象

    public interface State {
        public String doAction(Context context);
        public void print();
    }
    

    状态实现1

    public class StartState implements State {
        @Override
        public String doAction(Context context) {
            context.setState(this);
            return null;
        }
    
        @Override
        public void print() {
            System.out.println("StartState");
        }
    }
    

    状态实现2

    public class EndState implements State {
        @Override
        public String doAction(Context context) {
            context.setState(this);
            return null;
        }
    
        public void print(){
            System.out.println("EndState");
        }
    }
    
  • 相关阅读:
    【洛谷P3368】 【模板】树状数组 2
    树状数组
    【codevs1519】 过路费
    【洛谷P3398】 仓鼠找sugar
    【洛谷P2912】 [USACO08OCT]牧场散步Pasture Walking
    字符串哈希函数
    【洛谷P3498】 [POI2010]KOR-Beads
    NOIp2011 选择客栈
    【洛谷P1381】单词背诵
    P3396 哈希冲突
  • 原文地址:https://www.cnblogs.com/tjc1996/p/10815599.html
Copyright © 2011-2022 走看看