2020年8月7日星期五

无废话设计模式(17)行为型模式

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年十一高速公路免费几天?西冲露营安全吗?西冲两日自助游,求路线安排?

没有评论:

发表评论