日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java mediator_java—mediator中介模式

發布時間:2023/12/10 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java mediator_java—mediator中介模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

中介者模式是由GoF提出的23種軟件設計模式的一種。Mediator模式是行為模式之一,Mediator模式定義:用一個中介者對象來封裝一系列的對象交互。中介者使各對象不需要顯式的相互引用,從而使其耦合松散,而且可以獨立的改變他們之間的交互。

適用性

1)一組對象以定義良好但是復雜的方式進行通信。產生的相互依賴關系結構混亂且難以理解。

2)一個對象引用其他很多對象并且直接與這些對象通信,導致難以復用該對象。

3)想定制一個分布在多個類的行為,而又不想生成太多的子類。

結構圖如下

colleague向一個中介者對象發送和接受請求。中介者在各個colleague間適當的轉發請求以實現協作行為。

優缺點

1)減少了子類生成Mediator將原本分布于多個對象間的行為集中在一起,改變這些行為只需生成Mediator的子類即可,這樣各個Colleague類可被重用。

2)它將各Colleague解耦。Mediator有利于各Colleague間的松耦合,你可以獨立的改變和復用各Colleague類和Mediator類。

3)它簡化了對象協議用Mediator和各Colleague間的一對多的交互來代替多對多的交互。一對多的關系更易于理解、維護和擴展。

4)它對對象如何協作進行了抽象將中介作為一個獨立的概念并將其封裝在一個對象中,使你將注意力從對象各自本身的行為轉移到它們之間的交互上來。這有助于弄清楚一個系統中的對象是如何交互的。

5)它使控制集中化,中介者模式將交互的復雜性變為中介者的復雜性。因為中介者封裝了協議,它可能變得比任一個Colleague都復雜。這可能使得中介者自身成為一個難于維護的龐然大物。

1、Colleague.java:

package mediator;

public abstract class Colleague {

private Mediator mediator;

private String message;

public Colleague(Mediator m){

mediator = m;

}

public Mediator getMediator(){

return mediator;

}

public String getMessage(){

return message;

}

public void setMessage(String message){

this.message = message;

}

public abstract void sendMsg(Colleague colleague);

public abstract void getMsg(Colleague colleague);

}

2、Colleague的子類:Colleague1,Colleague2,Colleague3

package mediator;

public class Colleague1 extends Colleague{

public Colleague1(Mediator m){

super(m);

}

@Override

public void getMsg(Colleague colleague) {

getMediator().action(colleague,0);

//System.out.println("Colleague1 has got the message-"+"");

}

@Override

public void sendMsg(Colleague colleague) {

getMediator().action(colleague,1);

//System.out.println("Colleague1 has send the message "+msg+"");

}

}

package mediator;

public class Colleague2 extends Colleague{

public Colleague2(Mediator m){

super(m);

}

@Override

public void getMsg(Colleague colleague) {

getMediator().action(colleague,0);

//System.out.println("Colleague2 has got the message-"+"");

}

@Override

public void sendMsg(Colleague colleague) {

getMediator().action(colleague,1);

//System.out.println("Colleague2 has send the message "+msg+"");

}

}

package mediator;

public class Colleague3 extends Colleague{

public Colleague3(Mediator m){

super(m);

}

@Override

public void getMsg(Colleague colleague) {

getMediator().action(colleague,0);

//System.out.println("Colleague3 has got the message-"+"");

}

@Override

public void sendMsg(Colleague colleague) {

getMediator().action(colleague,1);

//System.out.println("Colleague3 has send the message "+msg+"");

}

}

3、Mediator抽象類:

package mediator;

public abstract class Mediator {

/**

* @param sender

* @param flag?? 0是讀,1是發送

*/

public abstract void action(Colleague sender,int flag);//mediator針對colleague的一個交互行為

public abstract void addCollegue(Colleague colleague);//加入mediator對象

}

4、Mediator的子類:

package mediator;

import java.util.ArrayList;

import java.util.List;

public class ConcreteMediator extends Mediator{

private List? member = new ArrayList();

@Override

public void action(Colleague sender,int flag) {

String msg = sender.getMessage();

for(Colleague colleague : member){

if(colleague.equals(sender)){

if(flag==0){

System.out.println("這是從"+sender+"接收到的消息:"+sender.getMessage());

}else{

sender.setMessage("test.......");

}

break;

}

}

}

@Override

public void addCollegue(Colleague colleague) {

member.add(colleague);

}

}

5、測試類:

package mediator;

public class MediatorTEST {

public static void main(String[] args){

Mediator mediator = new ConcreteMediator();

Colleague colleague1 = new Colleague1(mediator);

Colleague colleague2 = new Colleague2(mediator);

Colleague colleague3 = new Colleague3(mediator);

mediator.addCollegue(colleague1);

mediator.addCollegue(colleague2);

mediator.addCollegue(colleague3);

// Colleague1 觸發行為

colleague1.setMessage("嗨,大家好!");

// Colleague2 觸發行為

colleague2.setMessage("很高興見到你!");

// Colleague3 觸發行為

colleague3.setMessage("我們一起玩游戲吧!");

colleague1.getMsg(colleague2);

colleague1.sendMsg(colleague2);

colleague1.getMsg(colleague2);

}

}

總結

以上是生活随笔為你收集整理的java mediator_java—mediator中介模式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。