⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 client.java

📁 设计模式描述设计模式描述设计模式描述设计模式描述
💻 JAVA
字号:
/*
 * Created on 2005-5-11
 *
 * TODO To change the template for this generated file go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
package com.test.pattern.behavir.mediator;

/**
 * @author Administrator
 * 
 * 意图 用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 适用性
 * 一组对象以定义良好但是复杂的方式进行通信。产生的相互依赖关系结构混乱且难以理解。 一个对象引用其他很多对象并且直接与这些对象通信,导致难以复用该对象。
 * 想定制一个分布在多个类中的行为,而又不想生成太多的子类。
 *  
 */
class Mediator {
	private DataProviderColleague dataProvider;

	private DataConsumerColleague dataConsumer;

	public void IntroduceColleagues(DataProviderColleague c1,
			DataConsumerColleague c2) {
		dataProvider = c1;
		dataConsumer = c2;
	}

	public void DataChanged() {
		int i = dataProvider.getMyData();
		dataConsumer.NewValue(i);
	}
}

class DataConsumerColleague {
	public void NewValue(int i) {
		System.out.println("New value " + i);
	}
}

class DataProviderColleague {
	private Mediator mediator;

	private int iMyData = 0;

	public int getMyData() {
		return iMyData;
	}

	public void setMyData(int value) {
		iMyData = value;
	}

	public DataProviderColleague(Mediator m) {
		mediator = m;
	}

	public void ChangeData() {
		iMyData = 403;

		// Inform mediator that I have changed the data
		if (mediator != null)
			mediator.DataChanged();
	}
}

/// <summary>
/// Summary description for Client.
/// </summary>

public class Client {
	public static void main(String[] args) {
		Mediator m = new Mediator();
		DataProviderColleague c1 = new DataProviderColleague(m);
		DataConsumerColleague c2 = new DataConsumerColleague();
		m.IntroduceColleagues(c1, c2);

		c1.ChangeData();

	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -