欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

管道( Pipeline )模型--示例

发布时间:2024/7/23 编程问答 51 豆豆
生活随笔 收集整理的这篇文章主要介绍了 管道( 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 )模型--示例的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。