管道( Pipeline )模型--示例
生活随笔
收集整理的这篇文章主要介绍了
管道( Pipeline )模型--示例
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
类图
时序图
阀门接口
/*** 阀门接口* @author administrator**/ public interface Valve {public String getName();public void invoke( Context context ); }基本阀门 /*** 基础阀门* @author administrator**/ public class BasicValve implements Valve{private String name;public String getName() {return name;}public void setName(String name) {this.name = name;}public BasicValve(String name) {super();this.name = name;}/*** 阀门通用方法*/public void invoke( Context context ){System.out.println( name + "阀门完成操作。" );} }
其它阀门
/*** 一般阀门对象* @author administrator**/ public class CommValve implements Valve{private String name;public String getName() {return name;}public void setName(String name) {this.name = name;}public CommValve(String name) {super();this.name = name;}public void invoke( Context context ){System.out.println( name + "阀门完成操作。" );context.invokeNext();} }管道流 /*** 管道对象* @author administrator**/ public class Pipeline {List<Valve> valves = new ArrayList<Valve>();/*** 基础阀门*/private Valve basic;public Valve getBasic() {return basic;}public void setBasic(Valve basic) {this.basic = basic;}public Pipeline(Valve basic) {super();this.basic = basic;}/*** 添加 阀门* @param v*/public void addValve( Valve v ){valves.add( v );}public void invoke(){Context context = new Context( valves.iterator(), this );context.invokeNext();} }
上下文 /*** 上下文对象* @author administrator**/ public class Context {private Iterator<Valve> valveIterator;private Pipeline pipeline;public Context(Iterator<Valve> valveIterator, Pipeline pipeline) {super();this.valveIterator = valveIterator;this.pipeline = pipeline;}public void invokeNext(){if( valveIterator.hasNext() ){Valve valve = valveIterator.next();valve.invoke( this );}else{pipeline.getBasic().invoke( this );}} }
测试类 public class TestMain {/*** @param args*/public static void main(String[] args) {Pipeline line = new Pipeline( new BasicValve( "Basic" ) );line.addValve( new CommValve( "A" ) );line.addValve( new CommValve( "B" ) );line.addValve( new CommValve( "C" ) );line.addValve( new CommValve( "D" ) );line.invoke();}}
运行结果 A阀门完成操作。 B阀门完成操作。 C阀门完成操作。 D阀门完成操作。 Basic阀门完成操作。
总结
以上是生活随笔为你收集整理的管道( Pipeline )模型--示例的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: Replace Inheritance
- 下一篇: 中缀到后缀的转换