網(wǎng)站建設(shè) 中企動力公司中山做網(wǎng)站推廣公司
代表模式(Mediator Pattern)是一種行為型設(shè)計模式,它通過封裝一組對象之間的交互方式,使得這些對象之間的通信變得松散耦合,從而降低了對象之間的直接依賴關(guān)系。代表模式通過引入一個中介者(Mediator)對象,將對象之間的通信集中處理,從而減少了對象之間的相互依賴,使得系統(tǒng)更加靈活和可擴展。
在代表模式中,中介者對象充當(dāng)了對象之間的調(diào)度者和協(xié)調(diào)者的角色,它封裝了對象之間的通信邏輯,負(fù)責(zé)接收和發(fā)送消息,并將消息傳遞給相關(guān)的對象。對象之間不再直接相互引用,而是通過中介者對象進(jìn)行通信,從而達(dá)到松散耦合的效果。
以下是一個示例,展示了代表模式的應(yīng)用場景和代碼實現(xiàn):
// 中介者接口
interface Mediator {void sendMessage(String message, Colleague colleague);
}// 具體中介者
class ConcreteMediator implements Mediator {private Colleague colleague1;private Colleague colleague2;public void setColleague1(Colleague colleague1) {this.colleague1 = colleague1;}public void setColleague2(Colleague colleague2) {this.colleague2 = colleague2;}@Overridepublic void sendMessage(String message, Colleague colleague) {if (colleague == colleague1) {colleague2.receiveMessage(message);} else if (colleague == colleague2) {colleague1.receiveMessage(message);}}
}// 抽象同事類
abstract class Colleague {protected Mediator mediator;public Colleague(Mediator mediator) {this.mediator = mediator;}public abstract void send(String message);public abstract void receiveMessage(String message);
}// 具體同事類
class ConcreteColleague1 extends Colleague {public ConcreteColleague1(Mediator mediator) {super(mediator);}@Overridepublic void send(String message) {mediator.sendMessage(message, this);}@Overridepublic void receiveMessage(String message) {System.out.println("ConcreteColleague1 received message: " + message);}
}// 具體同事類
class ConcreteColleague2 extends Colleague {public ConcreteColleague2(Mediator mediator) {super(mediator);}@Overridepublic void send(String message) {mediator.sendMessage(message, this);}@Overridepublic void receiveMessage(String message) {System.out.println("ConcreteColleague2 received message: " + message);}
}// 測試代碼
public class MediatorPatternExample {public static void main(String[] args) {ConcreteMediator mediator = new ConcreteMediator();ConcreteColleague1 colleague1 = new ConcreteColleague1(mediator);ConcreteColleague2 colleague2 = new ConcreteColleague2(mediator);mediator.setColleague1(colleague1);mediator.setColleague2(colleague2);colleague1.send("Hello from colleague1!");colleague2.send("Hi from colleague2!");}
}
在上面的示例中,Mediator
接口定義了中介者的操作,ConcreteMediator
是具體的中介者實現(xiàn)。Colleague
是抽象同事類,ConcreteColleague1
和 ConcreteColleague2
是具體的同事類實現(xiàn)。
在 MediatorPatternExample
類中,我們創(chuàng)建了一個中介者對象 ConcreteMediator
,并創(chuàng)建了兩個同事對象 ConcreteColleague1
和 ConcreteColleague2
。然后,通過調(diào)用 setColleague1
和 setColleague2
方法將同事對象注冊到中介者中。
最后,我們通過調(diào)用同事對象的 send
方法發(fā)送消息,消息會經(jīng)過中介者進(jìn)行轉(zhuǎn)發(fā),最終到達(dá)目標(biāo)同事對象,從而實現(xiàn)了對象之間的通信。