0-前言
中介者模式定义(Mediator):
用一个中介对象来封装一系列的对象交互。
中介者对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变他们之间的交互。
1-实现
1-1、简单UML图
1-2、代码实现
//1、中介者抽象父类(客服父类)-----------------------------------------abstract class CustomerServer{ abstract void Communicate(String message,Communicator communicator);}//1-1、具体中介者(客服MM)class CustomerServerMM extends CustomerServer{ //A、设置客服服务的对象 private Customer customer; private Technician technician; public void setCustomer(Customer _customer) { this.customer = _customer; } public void setTechnician(Technician _technician) { this.technician = _technician; } //B、客服开始沟通 @Override public void Communicate(String message, Communicator communicator) { if (communicator ==customer) //顾客 { technician.GetMessage(message); } else { customer.GetMessage(message); } }}//2、服务对象抽象父类-------------------------------------------------abstract class Communicator{ protected CustomerServer customerServer; //中介者 public Communicator(CustomerServer _customerServer) { this.customerServer = _customerServer; }}//2-1、服务对象具体类(顾客)class Customer extends Communicator{ public Customer(CustomerServer customerServer) { super(customerServer); } //A、咨询 public void Ask(String message) { customerServer.Communicate(message,this); } //B、获得回复 public void GetMessage(String message) { System.out.println("顾客得到技术人员的回复:"+message); }}//2-2、服务对象具体类(维修技术人员)class Technician extends Communicator{ public Technician(CustomerServer customerServer) { super(customerServer); } //A、回复 public void Anser(String message) { customerServer.Communicate(message,this); } //B、获得问题 public void GetMessage(String message) { System.out.println("技术人员接收到顾客的问题:"+message); }
客户端
CustomerServerMM csMM = new CustomerServerMM(); Customer customer = new Customer(csMM); Technician technician = new Technician(csMM); csMM.setCustomer(customer); csMM.setTechnician(technician); customer.Ask("为什么我的电脑开不了机"); technician.Anser("电池没插电源没插,开啥机!");
运行结果
2-应用场景简单总结
1、当一组对象以定义良好但是复杂的方式进行相互通讯时;
2、当一个对象需要引用很多其他对象并与这些对象通讯时;
无废话设计模式(17)行为型模式创建跨境电商品牌的最佳捷径小老板云站分享沙龙、 兰亭集势、 Google AdWords系列课程、 消灭一二星评分!这位铂金卖家3招搞定!、 亚马逊卖家面对差评的各种反应集合,你属于哪一种?、 重磅!美国进入公共卫生紧急状态!极端情况下可实施货物禁运?、 2017年十一高速公路免费几天?、 西冲露营安全吗?、 西冲两日自助游,求路线安排?、
没有评论:
发表评论