肖哥弹架构 跟大家"弹弹" 业务中设计模式的使用,需要代码关注
欢迎 点赞,点赞,点赞。
关注公号Solomon肖哥弹架构获取更多精彩内容
即时通讯软件中,用户之间的消息传递需要一个集中的管理者来协调,以避免用户之间的直接耦合,简化消息传递逻辑。
2. 为什么要使用中介者设计模式
中介者模式定义了一个中介者对象,该对象封装了一组对象之间的交互。这使得各对象不需要显示地相互引用,从而使耦合度降低。
3. 标准中介者设计模式图
4. 业务中介者设计模式图
5. 业务代码参考
java
// 用户类
class User {
private String name;
private ChatMediator mediator;
public User(String name, ChatMediator mediator) {
this.name = name;
this.mediator = mediator;
mediator.addUser(this);
}
public void send(String message) {
System.out.println(name + " says: " + message);
}
public void receive(String message) {
System.out.println("Received message: " + message);
}
public String getName() {
return name;
}
}
// 聊天中介者接口
interface ChatMediator {
void sendMessage(User user, String message);
}
// 具体聊天中介者
class ConcreteChatMediator implements ChatMediator {
private Map<String, User> users = new HashMap<>();
@Override
public void sendMessage(User user, String message) {
for (User recipient : users.values()) {
if (!recipient.getName().equals(user.getName())) {
recipient.receive(message);
}
}
}
public void addUser(User user) {
users.put(user.getName(), user);
}
public User getUser(String name) {
return users.get(name);
}
}
// 客户端使用
class InstantMessagingApp {
public static void main(String[] args) {
ConcreteChatMediator mediator = new ConcreteChatMediator();
User lili = new User("lili", mediator);
User sasa = new User("sasa", mediator);
lili.send("Hi sasa, how are you?");
sasa.send("Hi lili, I'm fine, thanks!");
}
}
6. 使用中介者设计模式的好处
- 降低耦合度:用户之间的交互通过中介者进行,减少了对象之间的依赖。
- 集中管理:消息传递逻辑集中管理,便于维护和扩展。
7. 其他使用中介者设计模式场景参考
- UI组件交互:在复杂的图形用户界面中,组件之间的交互通过中介者进行协调。
- 事件处理系统:事件的发布和订阅通过中介者模式进行管理。
8. 可参考开源框架
- Java AWT 和 Swing:使用中介者模式来管理组件之间的交互。
总结
中介者模式通过引入一个中介者对象来简化对象之间的交互,降低了系统的耦合度,提高了系统的可维护性和可扩展性。
历史热点文章
- 外观模式(Facade Pattern):微服务架构中的数据库访问实战案例分析
- 代理模式(Proxy Pattern):权限校验API调用实战案例分析
- 桥接模式(Bridge Pattern):多样式用户界面组件实战案例分析
- 组合模式(Composite Pattern): 在线教育平台课程管理实战案例分析
- 享元模式(Flyweight Pattern):网页游戏中的角色对象管理实战案例分析
- 观察者模式(Observer Pattern):股票交易系统实战案例分析
- 策略模式(Strategy Pattern):电商平台的优惠券系统实战案例分析
- 模板方法模式(Template Method Pattern):视频播放应用实战案例分析
- 命令模式(Command Pattern):网络爬虫任务队列实战案例分析
- 迭代器模式(Iterator Pattern):电商平台商品分类浏览实战案例分析
- 中介者模式(Mediator Pattern):即时通讯软件实战案例分析
- 备忘录模式(Memento Pattern):游戏存档系统实战案例分析
- 状态模式(State Pattern):电商平台订单状态管理实战案例分析
- 责任链模式(Chain of Responsibility Pattern):电商平台的订单审批流程实战案例分析
- 访问者模式(Visitor Pattern):电商平台商品访问统计实战案例分析
- 工厂方法模式(Factory Method Pattern): 电商多种支付实战案例分析
- 抽象工厂模式(Abstract Factory Pattern):多风格桌面应用实战案例分析
- 建造者模式(Builder Pattern): 在线订单系统实战案例分析
- 原型模式(Prototype Pattern): 云服务环境配置实战案例分析
- 适配器模式(Adapter Pattern):第三方支付集成实战案例分析
- 装饰器模式(Decorator Pattern):电商平台商品价格策略实战案例分析
- 单例模式(Singleton Pattern):购物车实战案例分析