当前位置 : 主页 > 编程语言 > java >

Pipeline & Valve

来源:互联网 收集:自由互联 发布时间:2021-06-28
gistfile1.txt public interface Valve { void invoke(ValveContext valveContext);}public interface ValveContext { void invokeNext();}public class Pipeline { private List valves; private Valve basic; private ValveContext valveContext; public Pi
gistfile1.txt
public interface Valve {

    void invoke(ValveContext valveContext);

}


public interface ValveContext {

    void invokeNext();

}


public class Pipeline {

    private List
 
   valves;
    private Valve basic;

    private ValveContext valveContext;

    public Pipeline(Valve basic) {
        this.basic = basic;
        valves = Lists.newLinkedList();
        valveContext = new PipelineValueContext();
    }

    public void addValve(Valve valve) {
        valves.add(valve);
    }

    public void invoke() {
        valveContext.invokeNext();
    }

    public class PipelineValueContext implements ValveContext {
        private int stage = 0;

        public void invokeNext() {
            int next = stage;
            stage ++;
            if (next < valves.size()) {
                valves.get(next).invoke(this);
            } else if (next == valves.size() && basic != null ) {
                basic.invoke(this);
            }
        }
    }

}

/********************************Test******************

public static void main(String[] args) {
        FirstValve firstValve = new FirstValve();
        SecondValve secondValve = new SecondValve();
        BasicValve basicValve = new BasicValve();

        Pipeline pipeline = new Pipeline(basicValve);
        pipeline.addValve(firstValve);
        pipeline.addValve(secondValve);

        pipeline.invoke();
    }
 
网友评论