中介者模式(Mediator):主要用來降低類與類之間的耦合的,因為如果類與類之間有依賴關系的話,不利于功能的拓展和維護,因為只要修改一個對象,其它關聯的對象都得進行修改。
##一、uml建模:

##二、代碼實現
~~~
/**
* 中介者模式(Mediator):主要用來降低類與類之間的耦合的,因為如果類與類之間有依賴關系的話,
*
* 不利于功能的拓展和維護,因為只要修改一個對象,其它關聯的對象都得進行修改。
*
* 示例:下面以房屋(出租)中介為例
*/
interface Mediator {
void createMediator();
void recommendHouse();
}
/**
* 咱(User)讓中介幫我們推薦房子
*
* 所以咱需要持有一個中介實例
*/
abstract class User {
private Mediator mediator;
public User(Mediator mediator) {
this.mediator = mediator;
}
public Mediator getMediator() {
return mediator;
}
public abstract void selectHouse();
}
class ZhangSan extends User {
public ZhangSan(Mediator mediator) {
super(mediator);
// TODO Auto-generated constructor stub
}
@Override
public void selectHouse() {
System.out.println("張三在選房子...");
}
}
class LiSi extends User {
public LiSi(Mediator mediator) {
super(mediator);
// TODO Auto-generated constructor stub
}
@Override
public void selectHouse() {
System.out.println("李四在選房子...");
}
}
/**
* 房屋中介:中介向要找房子的那些人推薦房子,由他們選擇自己想要的房子。
*
* 因此中介得持有那些實例,才有可能把房子租出去。
*/
class MyMediator implements Mediator {
private User zhangsan;
private User lisi;
public User getZhangsan() {
return zhangsan;
}
public User getLisi() {
return lisi;
}
@Override
public void createMediator() {
zhangsan = new ZhangSan(this);
lisi = new LiSi(this);
}
/**
* 中介向要找房子的那些人推薦房子,由他們選擇自己想要的房子
*/
@Override
public void recommendHouse() {
zhangsan.selectHouse();
lisi.selectHouse();
}
}
/**
* 客戶端測試類
*
* @author Leo
*/
public class Test {
public static void main(String[] args) {
Mediator mediator = new MyMediator();
mediator.createMediator();
mediator.recommendHouse();
}
}
~~~
##三、總結
中介者模式只需關心和Mediator類的關系,具體類與類之間的關系及調用交給Mediator就行。
- 前言
- (一)策略模式建模與實現
- (二)觀察者模式建模與實現
- (三)裝飾者模式建模與實現
- (四)工廠方法模式建模與實現
- (五)抽象工廠模式建模與實現
- (六)單例模式建模與實現
- (七)命令模式建模與實現
- (八)適配器模式建模與實現
- (九)外觀模式建模與實現
- (十)模板方法模式建模與實現
- (十一)迭代器模式建模與實現
- (十二)組合模式建模與實現
- (十三)狀態模式建模與實現
- (十四)代理模式建模與實現
- (十五)建造者模式建模與實現
- (十六)原型模式建模與實現
- (十七)橋接模式建模與實現
- (十八)責任鏈模式建模與實現
- (十九)備忘錄模式建模與實現
- (二十)解釋器模式建模與實現
- (二十一)享元模式建模與實現
- (二十二)中介者模式建模與實現
- (二十三)訪問者模式建模與實現
- Java設計模式博客全目錄