类图
阀门接口
/** * 阀门接口 * @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阀门完成操作。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。