加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 程序设计 > 正文

管道( 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阀门完成操作。

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读