管道( Pipeline )模型--示例
发布时间:2020-05-23 13:01:13 所属栏目:程序设计 来源:互联网
导读:类图 时序图 阀门接口 /** * 阀门接口 * @author administrator * */public interface Valve {public String getName();public void invoke( Context context );} 基本阀门 /** * 基础阀门 * @author administrator * */
类图
时序图
阀门接口 /** * 阀门接口 * @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阀门完成操作。 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |