zoukankan      html  css  js  c++  java
  • 中介者模式

    个人博客

    http://www.milovetingting.cn

    中介者模式

    中介者模式也称为调解者模式或调停模式。

    模式定义

    中介者模式包装了一系列对象相互作用的方式,使得这些对象不必相互明显影响。

    使用场景

    当对象间交互操作很多且每个对象的行为操作都依赖彼此时,为防止在修改一个对象的行为时,同时涉及修改很多其他对象的行为。可采用中介者模式来解决耦合的问题。将对象间多对多关系变成一对多的问题。

    简单使用

    定义Mediator

    public abstract class Mediator {
    
    	public void handleMessage(Customer customer) {
    		if (customer instanceof Seller) {
    			sendMessageToBuyer();
    		} else if (customer instanceof Buyer) {
    			sendMessageToSeller();
    		}
    	}
    
    	public abstract void sendMessageToSeller();
    
    	public abstract void sendMessageToBuyer();
    
    }
    

    定义Customer

    public abstract class Customer {
    
    	protected Mediator mediator;
    
    	public Customer(Mediator mediator) {
    		this.mediator = mediator;
    	}
    	
    	public abstract void action();
    
    }
    

    定义Mediator实现类

    public class MediatorImpl extends Mediator {
    
    	@Override
    	public void sendMessageToSeller() {
    		System.out.println("转发Buyer消息给Seller");
    	}
    
    	@Override
    	public void sendMessageToBuyer() {
    		System.out.println("转发Seller消息给Buyer");
    	}
    
    }
    

    定义Customer实现类

    public class Buyer extends Customer {
    
    	public Buyer(Mediator mediator) {
    		super(mediator);
    	}
    
    	@Override
    	public void action() {
    		mediator.handleMessage(this);
    	}
    
    }
    
    public class Seller extends Customer {
    
    	public Seller(Mediator mediator) {
    		super(mediator);
    	}
    
    	@Override
    	public void action() {
    		mediator.handleMessage(this);
    	}
    
    }
    

    调用

    public class Main {
    
    	public static void main(String[] args) {
    		MediatorImpl mediator = new MediatorImpl();
    		Buyer buyer = new Buyer(mediator);
    		Seller seller = new Seller(mediator);
    		buyer.action();
    		seller.action();
    	}
    
    }
    

    输出结果

    转发Buyer消息给Seller
    转发Seller消息给Buyer
    
  • 相关阅读:
    OS X进程管理之launchctl
    varnish-4.x 之varnishlog,varnishstat,varnishtop,varnishhist
    Java ClassLoader详解(转载)
    java线程中断[interrupt()函数] (转载)
    Struts2实例详解(转载)
    java 重定向和转发(转载)
    Java中Class.forName()的作用(转载)
    JSP页面的编码设置(转载)
    Struts2 实例(转载)
    Spring AOP(转载)
  • 原文地址:https://www.cnblogs.com/milovetingting/p/12312401.html
Copyright © 2011-2022 走看看