Java設(shè)計(jì)模式之中介者模式(Mediator Pattern)簡(jiǎn)介
Java設(shè)計(jì)模式的中介者模式是行為模式之一。定義一個(gè)中介對(duì)象來(lái)封裝系列對(duì)象之間的交互。中介者使各個(gè)對(duì)象不需要顯式地相互引用,從而使其耦合性松散,并且可以獨(dú)立地改變他們之間的交互。
如下圖所示:

生產(chǎn)者、消費(fèi)者、代理商之間的中介模式實(shí)例:
public abstract class PersonColleague
{
protected Mediator mediator;
public Mediator getMediator()
{
return mediator;
}
public void setMediator(final Mediator mediator)
{
this.mediator = mediator;
}
protected abstract void message(String context);
}
public class Mediator
{
private PersonColleague consumer = null;
private ProducerColleague producer = null;
public ProducerColleague getProducer()
{
return producer;
}
public void setProducer(final ProducerColleague producer)
{
this.producer = producer;
}
public PersonColleague getConsumer()
{
return consumer;
}
public void setConsumer(final PersonColleague consumer)
{
this.consumer = consumer;
}
public Mediator()
{
}
public synchronized void message(final String context)
{
if (consumer != null)
{
System.out.println(context);
}
else if (producer != null)
{
System.out.println(context);
}
}
}
public class ConsumerColleague extends PersonColleague
{
public ConsumerColleague(final Mediator mediator)
{
this.mediator = mediator;
}
@Override
protected void message(final String context)
{
this.mediator.setConsumer(this);
this.mediator.message("hello! i am a consumer");
}
}
public class ProducerColleague extends PersonColleague
{
public ProducerColleague(final Mediator mediator)
{
this.mediator = mediator;
}
@Override
protected void message(final String context)
{
this.mediator.setProducer(this);
this.mediator.message(context);
}
}
public class Client
{
public static void main(final String[] args)
{
final Mediator mediator = new Mediator();
final PersonColleague person = new ConsumerColleague(mediator);
final PersonColleague person1 = new ProducerColleague(mediator);
person.message("I am a consumer");
person1.message("I am a producer");
}
}
運(yùn)行結(jié)果:
hello! i am a consumer I am a producer
相關(guān)文章
對(duì)比Java設(shè)計(jì)模式編程中的狀態(tài)模式和策略模式
這篇文章主要介紹了Java設(shè)計(jì)模式編程中的狀態(tài)模式和策略模式對(duì)比,文中列舉了兩種模式的相似點(diǎn)和不同點(diǎn),并都舉了代碼的實(shí)例作為參照,需要的朋友可以參考下2016-04-04
詳解WebSocket+spring示例demo(已使用sockJs庫(kù))
本篇文章主要介紹了WebSocket spring示例demo(已使用sockJs庫(kù)),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-01-01
解決報(bào)錯(cuò):java.lang.IllegalStateException: Failed to&nb
在項(xiàng)目開(kāi)發(fā)中,可能會(huì)遇到Elasticsearch啟動(dòng)報(bào)錯(cuò)的問(wèn)題,原因可能包括版本不一致、端口配置錯(cuò)誤、配置文件不匹配及服務(wù)未啟動(dòng)等,解決方法包括檢查進(jìn)程、重啟服務(wù)等,這些經(jīng)驗(yàn)可以幫助開(kāi)發(fā)者快速定位問(wèn)題并解決,保證項(xiàng)目順利運(yùn)行2024-10-10
OpenFeign服務(wù)接口調(diào)用的過(guò)程詳解
Feign是一個(gè)聲明式WebService客戶(hù)端。使用Feign能讓編寫(xiě)Web?Service客戶(hù)端更加簡(jiǎn)單。它的使用方法是定義一個(gè)服務(wù)接口然后在上面添加注解,這篇文章主要介紹了OpenFeign服務(wù)接口調(diào)用,需要的朋友可以參考下2022-10-10
Java Web開(kāi)發(fā)中過(guò)濾器和監(jiān)聽(tīng)器使用詳解
這篇文章主要為大家詳細(xì)介紹了Java中的過(guò)濾器Filter和監(jiān)聽(tīng)器Listener的使用以及二者的區(qū)別,文中的示例代碼講解詳細(xì),需要的可以參考一下2022-10-10
使用feign發(fā)送http請(qǐng)求解析報(bào)錯(cuò)的問(wèn)題
這篇文章主要介紹了使用feign發(fā)送http請(qǐng)求解析報(bào)錯(cuò)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03
同時(shí)使用@LoadBalanced?@RefreshScope注解負(fù)載均衡失效分析
這篇文章主要為大家介紹了同時(shí)使用@LoadBalanced?@RefreshScope負(fù)載均衡失效問(wèn)題分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02

