java 设计模式 调停者模式

应用场景:

调停者模式是对象的行为模式。调停者模式包装了一系列对象相互作用的方式,使得这些对象不必相互明显引用。从而使它们可以较松散地耦合。

当这些对象中的某些对象之间的相互作用发生改变时,不会立即影响到其他的一些对象之间的相互作用。从而保证这些相互作用可以彼此独立地变化。

http://www.cnblogs.com/java-my-life/archive/2012/06/20/2554024.html,写的很好,图不错,可以借鉴下


模拟场景:

老板闲来无事提出一个需求,增加一个小功能,boss首先会找到项目老大,老大一看,首先安排 UI射击师来画图,画图完成之后,再交给工程师1,小房,小闫。

工程师完成之后再交给 测试 ,测试成功 之后 ok


Uml :

  


代码:

//项目老大接口

public interface ProjectManagerInterface {
	public void toNextColleague(Colleague c);
}

projectManager 负责处理同事之间的工作。

public class ProjectManager implements ProjectManagerInterface {
	private FangDeveloper fang;
	private YanDeveloper yan;
	private Tester tester;

	@Override
	public void toNextColleague(Colleague c) {
		//ba la ba la 
		//and  so on
		if(c instanceof Designer){
			fang.coding();
		}
		else if(c instanceof FangDeveloper){
			yan.coding();
		}else if(c instanceof YanDeveloper){
			tester.test();
		}else if(c instanceof Tester){
			System.err.println("可以交给boss了");
		}
		
	}
	
	public void doAction(){
		Designer designer = new Designer(this);
		fang = new FangDeveloper(this);
		yan = new YanDeveloper(this);
		tester = new Tester(this);
		
		designer.disignerImage();
		
	}

}
// 
public abstract class Colleague {

	//持有一个调停者对象
    private ProjectManagerInterface mediator;
    /**
     * 构造函数
     */
    public Colleague(ProjectManagerInterface mediator){
        this.mediator = mediator;
    }
    /**
     * 获取 项目老大
     */
    public ProjectManagerInterface getMediator() {
        return mediator;
    }
	
}

public class Designer extends Colleague{

	public Designer(ProjectManagerInterface mediator) {
		super(mediator);
	}

	public void disignerImage(){
		System.err.println("draw a  circle...");
		getMediator().toNextColleague(this);
	}
	
	
}

public class FangDeveloper extends Colleague{

	
	public FangDeveloper(ProjectManagerInterface mediator) {
		super(mediator);
	}

	public void coding() {
		System.err.println("coding by xiao fang");
		getMediator().toNextColleague(this);
	}

}

public class YanDeveloper extends Colleague{


	public YanDeveloper(ProjectManagerInterface mediator) {
		super(mediator);
	}
	
	public void coding() {
		System.err.println("coding by xiao yanyan");
		getMediator().toNextColleague(this);
	}

}

public class Tester extends Colleague {

	public Tester(ProjectManagerInterface mediator) {
		super(mediator);
	}

	public void test(){
		System.err.println("test case...");
		getMediator().toNextColleague(this);
	}
}

public class Main {

	public static void main(String[] args) {
		ProjectManager projectManager = new ProjectManager();
		projectManager.doAction();
	}
}

draw a  circle...
coding by xiao fang
coding by xiao yanyan
test case...
可以交给boss了





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值