管道( 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阀门完成操作。 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
