建站之星怎么弄相册,wordpress上传附加,十大外贸电商平台有哪些,河南省城乡建设厅网站首页中介者模式
说明
中介者模式#xff08;Mediator Pattern#xff09;属于行为型模式#xff0c;又称为调解者模式或调停者模式。用一个中介对象封装一系列的对象交互#xff0c;中介者使各对象不需要显示地相互作用#xff0c;从而使其耦合松散#xff0c;而且可以独立…中介者模式
说明
中介者模式Mediator Pattern属于行为型模式又称为调解者模式或调停者模式。用一个中介对象封装一系列的对象交互中介者使各对象不需要显示地相互作用从而使其耦合松散而且可以独立的改变它们之间的交互。 该模式主要解决的是对象间通信的问题多个对象之间需要相互通信如果每个对象都持有交互对象的引用那么对象间的耦合度太高不利用维护与扩展。中介者模式将对象间相互依赖的网状关系重构成了星状关系对象之间的通信交给中介者集中进行管理即可。
结构
抽象中介者Mediator定义各同事角色之间通信的接口该角色根据需求创建不是必须的 具体中介者ConcreteMediator管理具体的同事对象并且负责它们之间的通信 抽象同事Colleague定义同一类型同事的统一行为该角色根据需求创建不是必须的 具体同事ConcreteColleague需要持有具体中介者的引用与其他对象通信时调用中介者完成。
代码案例
具体同事ConcreteColleague
/*** program: mediator* description: 用户类* 具体同事ConcreteColleague* author: wxw* create: 2024-03-13 11:14**/
Data
AllArgsConstructor
public class User {private String name;private MessagePlatform mp;// 通过中介者发送消息public void sendMsg(String name, String msg){mp.sendMsg(this, name, msg);}// 得到消息public void getMsg(String name, String msg){System.out.println(String.format(【%s】收到来自【%s】的消息%s,this.name, name, msg));}}具体中介者ConcreteMediator
/*** program: mediator* description: 短信平台* 具体中介者ConcreteMediator* author: wxw* create: 2024-03-13 11:16**/
public class MessagePlatform {// 保存所有需要管理的对象private MapString,User userMap new HashMap();// 注册用户public void registerUesr(User user){userMap.put(user.getName(),user);}// 发送消息public void sendMsg(User send, String receive, String msg){if(!userMap.containsKey(receive)){System.out.println(对不起用户【 receive 】还未注册发送消息失败);return;}// 转发消息User user userMap.get(receive);user.getMsg(send.getName(), msg);}}客户端
public class Test {public static void main(String[] args) {MessagePlatform mp new MessagePlatform();User zs new User(张三,mp);User ls new User(李四,mp);User ww new User(王五,mp);User zl new User(赵六,mp);// 注册张三、李四、王五赵六未注册mp.registerUesr(zs);mp.registerUesr(ls);mp.registerUesr(ww);zs.sendMsg(李四, 出来玩呀);ls.sendMsg(张三, 加班呢没空);zs.sendMsg(王五, 出来玩不);ww.sendMsg(张三,可以啊我来找你);ww.sendMsg(赵六, 一起去张三家玩呀);}
}输出结果
【李四】收到来自【张三】的消息出来玩呀
【张三】收到来自【李四】的消息加班呢没空
【王五】收到来自【张三】的消息出来玩不
【张三】收到来自【王五】的消息可以啊我来找你
对不起用户【赵六】还未注册发送消息失败