当前位置: 首页 > news >正文

网站建设公司推广网站品牌运营贵阳市房地产交易平台上线

网站建设公司推广网站品牌运营,贵阳市房地产交易平台上线,网站生成pc应用,android上传wordpress中介者模式在Java中的实现#xff1a;设计模式精解 中介者模式#xff08;Mediator Pattern#xff09;是一种行为型设计模式#xff0c;用于定义一个中介者对象#xff0c;以封装一系列对象之间的交互#xff0c;从而使对象之间的交互不再直接发生#xff0c;减少了系…中介者模式在Java中的实现设计模式精解 中介者模式Mediator Pattern是一种行为型设计模式用于定义一个中介者对象以封装一系列对象之间的交互从而使对象之间的交互不再直接发生减少了系统中的耦合度。中介者模式适用于对象之间的交互复杂的场景使得各个对象之间的协作变得更加简单和清晰。 本文将详细解析中介者模式在Java中的实现介绍其结构、优缺点并通过具体的代码示例展示如何在Java中使用中介者模式。 1. 中介者模式的基本概念 中介者模式的核心思想是将多个对象之间的复杂交互集中到一个中介者对象中从而使得对象之间不再直接通信降低系统的耦合度。这样当系统中需要增加或修改对象时只需要修改中介者对象的逻辑而不需要修改其他对象。 1.1 中介者模式的主要角色 Mediator中介者接口定义了与各个Colleague同事对象之间交互的接口。ConcreteMediator具体中介者实现Mediator接口负责协调各个Colleague对象之间的通信和协作。Colleague同事接口定义了中介者和各个具体同事对象的接口。ConcreteColleague具体同事实现Colleague接口与ConcreteMediator进行交互。 1.2 中介者模式的UML类图 ------------------ | Mediator | ------------------ | mediate() | ------------------^|| ------------------ ------------------ | ConcreteMediator | | ConcreteMediator | ------------------ ------------------ | -colleague1 | | -colleague2 | | -colleague2 | | -colleague2 | | mediate() | | mediate() | ------------------ ------------------^ ^| || | ------------------ ------------------ | ConcreteColleague| | ConcreteColleague| | 1 | | 2 | ------------------ ------------------ | -mediator | | -mediator | | operation() | | operation() | ------------------ ------------------2. 中介者模式的实现 2.1 示例聊天室 假设我们正在实现一个聊天室其中多个用户通过一个聊天室中介者进行消息的发送和接收。每个用户对象都可以发送和接收消息但它们之间的直接通信将通过中介者对象来完成。 2.1.1 中介者接口 // Mediator Interface public interface ChatRoomMediator {void sendMessage(String message, User user);void addUser(User user); }2.1.2 具体中介者 // ConcreteMediator import java.util.ArrayList; import java.util.List;public class ChatRoom implements ChatRoomMediator {private ListUser users;public ChatRoom() {this.users new ArrayList();}Overridepublic void sendMessage(String message, User user) {for (User u : users) {// Message should not be sent to the user who sent itif (u ! user) {u.receiveMessage(message);}}}Overridepublic void addUser(User user) {this.users.add(user);} }2.1.3 同事接口 // Colleague Interface public abstract class User {protected ChatRoomMediator mediator;protected String name;public User(ChatRoomMediator mediator, String name) {this.mediator mediator;this.name name;}public abstract void sendMessage(String message);public abstract void receiveMessage(String message); }2.1.4 具体同事 // ConcreteColleague1 public class ConcreteUser extends User {public ConcreteUser(ChatRoomMediator mediator, String name) {super(mediator, name);}Overridepublic void sendMessage(String message) {System.out.println(this.name sends: message);mediator.sendMessage(message, this);}Overridepublic void receiveMessage(String message) {System.out.println(this.name receives: message);} }2.1.5 主类 // Main class to demonstrate public class Main {public static void main(String[] args) {ChatRoomMediator mediator new ChatRoom();User user1 new ConcreteUser(mediator, Alice);User user2 new ConcreteUser(mediator, Bob);User user3 new ConcreteUser(mediator, Charlie);mediator.addUser(user1);mediator.addUser(user2);mediator.addUser(user3);user1.sendMessage(Hello, everyone!);user2.sendMessage(Hi Alice!);} }2.2 示例订单处理系统 假设我们正在实现一个订单处理系统其中订单的处理涉及到多个步骤如验证、支付、发货等。每个步骤都通过一个处理器对象进行处理而这些处理器对象通过一个中介者对象来协调工作。 2.2.1 中介者接口 // Mediator Interface public interface OrderMediator {void processOrder();void setOrder(Order order);void setPayment(Payment payment);void setShipping(Shipping shipping); }2.2.2 具体中介者 // ConcreteMediator public class OrderProcessingMediator implements OrderMediator {private Order order;private Payment payment;private Shipping shipping;Overridepublic void processOrder() {if (order ! null payment ! null shipping ! null) {order.process();payment.process();shipping.process();} else {System.out.println(Order, payment or shipping is missing.);}}Overridepublic void setOrder(Order order) {this.order order;}Overridepublic void setPayment(Payment payment) {this.payment payment;}Overridepublic void setShipping(Shipping shipping) {this.shipping shipping;} }2.2.3 同事接口 // Colleague Interface public interface OrderProcessComponent {void process(); }2.2.4 具体同事 // ConcreteColleague1 public class Order implements OrderProcessComponent {Overridepublic void process() {System.out.println(Processing order.);} }// ConcreteColleague2 public class Payment implements OrderProcessComponent {Overridepublic void process() {System.out.println(Processing payment.);} }// ConcreteColleague3 public class Shipping implements OrderProcessComponent {Overridepublic void process() {System.out.println(Processing shipping.);} }2.2.5 主类 // Main class to demonstrate public class Main {public static void main(String[] args) {OrderProcessingMediator mediator new OrderProcessingMediator();Order order new Order();Payment payment new Payment();Shipping shipping new Shipping();mediator.setOrder(order);mediator.setPayment(payment);mediator.setShipping(shipping);mediator.processOrder();} }3. 中介者模式的优缺点 3.1 优点 降低耦合度通过将对象间的交互集中到中介者对象中各个对象之间不再直接通信从而降低了系统的耦合度。集中控制所有对象间的交互逻辑集中在中介者中便于管理和修改。提高灵活性可以在不修改同事对象的情况下修改中介者的交互逻辑增加新的功能或修复问题。 3.2 缺点 中介者复杂化中介者对象可能变得过于复杂尤其是在处理复杂的对象交互时。单点故障中介者可能成为系统中的瓶颈或单点故障点一旦中介者出现问题所有对象的交互都会受到影响。 4. 实践建议 使用场景中介者模式适用于需要处理复杂交互的场景尤其是当对象之间的交互逻辑比较复杂时。注意复杂度在使用中介者模式时需要注意中介者的复杂度尽量避免中介者变得过于庞大可以考虑将其拆分为多个中介者。结合其他模式中介者模式可以与其他设计模式结合使用例如与观察者模式结合用于处理复杂的事件通知机制。 5. 总结 中介者模式是一种有效 的行为型设计模式通过将对象之间的交互集中到中介者对象中降低了系统的耦合度提高了系统的灵活性和可维护性。通过具体的Java代码示例本文展示了中介者模式在实际开发中的应用并介绍了中介者模式的优缺点和实践建议。希望这些内容能帮助你更好地理解和应用中介者模式在实际开发中提升系统的设计质量。
http://www.ho-use.cn/article/10815917.html

相关文章:

  • tomcat做网站属于什么wordpress html结尾
  • 旅行做攻略的网站好珠海市公司网站建设
  • 企业自助建站系统下载泉州工程建设招投标信息网
  • 微信兼职平台网站开发竞价排名点击器
  • 手机网站制作解决方案网站做优化多少钱
  • 合肥有什么好的网站建设公司好石家庄网络推广
  • 安徽建设工程实名制网站怎样制作一个自己的网站
  • 有好点的网站建设公司吗wordpress4.8.3中文版
  • 网站首页的模块布局枣庄手机网站建设电话
  • 北京网站优化团队app 网站 优势
  • 网站建设服务商怎么收费泉州建设网站公司哪家好
  • 建什么网站容易挣钱网站建设实验报告模板
  • 安徽省建设厅到底哪个网站桥梁建设 网站
  • 建设网站策划书门户网站建设和运行招标公告
  • 佛山网站建设天博与建设通相关的网站
  • 网站搭建同一页不同按钮不同页面网站搭建哪家好
  • 昌平上门做网站那云服务器和网站空间
  • 怎么查网站备案信息查询wordpress 外观
  • 乌海市建设局网站医院网页设计
  • 网站灰色杭州建站官网建设
  • python用于网站开发作风建设活动网站
  • 模板网站劣势保定网站制作企业
  • 网站运营及推广方案免费获取源码的网站
  • 自己创建一个网站需要多少钱山西常见网站建设推荐优化
  • 深圳专业网站优化公司报价wordpress手动安装插件
  • wordpress外链本地化优化网站专题
  • 设计网站建设公司广西人才网
  • 网站可分为哪两种类型注册深圳公司的费用
  • 商丘市网站建设公司wordpress虚拟商品销售
  • 污网站公司网站微信推广营销