`

设计模式----中介者模式(demiator pattern)

 
阅读更多
AbstractMediator.java代码如下:
package com.designPattern.mediator;

public abstract class AbstractMediator {

	protected Purchase purchase;
	protected Sale sale;
	protected Stock stock;
	
	public AbstractMediator(){
		purchase = new Purchase(this);
		sale = new Sale(this);
		stock = new Stock(this);
	}
	
	public abstract void execute(String str,Object ...objects);
}



Mediator.java代码如下:
package com.designPattern.mediator;

public class Mediator extends AbstractMediator{

	@Override
	public void execute(String str, Object... objects) {
      if(str.equals("purchase")){
    	  this.buyComputer((Integer)objects[0]);
      }else if(str.equals("sale.sell")){
    	  this.sellComputer((Integer)objects[0]);
      }else if(str.equals("sale.offsell")){
    	  this.offSell();
      }else if(str.equals("stock.clear")){
    	  this.clearStock();
      }
	}
	
	private void buyComputer(int number){
		int saleStatus = super.sale.getSaleStatus();
		if(saleStatus>80){
			System.out.println("采购IBM电脑:"+number+"台");
			super.stock.increase(number);
		}else{
			int buyNumber = number/2;
			System.out.println("采购IBM电脑:"+buyNumber+"台");
		}
	}
	
	private void sellComputer(int number){
		if(super.stock.getStockNumber()<number){
			super.purchase.buyIBMComputer(number);
		}
		super.stock.decrease(number);
	}
	
	private void offSell(){
		System.out.println("折价销售IBM电脑"+stock.getStockNumber()+"台");
	}
	
	private void clearStock(){
		super.sale.offSale();
		super.purchase.refuseBuyIBM();
	}

}



AbstractColleague.java代码如下:
package com.designPattern.mediator;

public abstract class AbstractColleague {
 protected AbstractMediator mediator ;
 
 public AbstractColleague(AbstractMediator mediator){
	 this.mediator = mediator;
 }
}



Purchase.java代码如下:
package com.designPattern.mediator;

public class Purchase extends AbstractColleague{

	public Purchase(AbstractMediator mediator) {
		super(mediator);
	}
	
	public void buyIBMComputer(int number){
		super.mediator.execute("purchase", number);
	}
	
	public void refuseBuyIBM(){
		System.out.println("不再采购IBM电脑");
	}

}



Sale.java代码如下:
package com.designPattern.mediator;

import java.util.Random;

public class Sale extends AbstractColleague{

	public Sale(AbstractMediator mediator) {
		super(mediator);
	}
	
	public void sellIBMComputer(int number){
		super.mediator.execute("sale.sell", number);
		System.out.println("销售IBM电脑"+number+"台");
	}
	
	public int getSaleStatus(){
		Random rand = new Random(System.currentTimeMillis());
		int saleStatus = rand.nextInt(100);
		System.out.println("IBM电脑的销售量为:"+saleStatus);
		return saleStatus;
	}
	
	public void  offSale(){
		super.mediator.execute("sale.offsell");
	}

}



Stock.java代码如下:
package com.designPattern.mediator;

public class Stock extends AbstractColleague{

	public Stock(AbstractMediator mediator) {
		super(mediator);
	}
	
	private static int COMPUTER_NUMBER = 100;
	
	public void increase(int number){
		COMPUTER_NUMBER = COMPUTER_NUMBER+number;
		System.out.println("库存数量为:"+COMPUTER_NUMBER);
	}
	
	public void decrease(int number){
		COMPUTER_NUMBER = COMPUTER_NUMBER-number;
		System.out.println("库存数量为:"+COMPUTER_NUMBER);
	}
	
	public int getStockNumber(){
		return COMPUTER_NUMBER;
	}
	
	public void clearStock(){
		System.out.println("清理存货数量为:"+COMPUTER_NUMBER);
		super.mediator.execute("stock.clear");
	}

}



Client.java代码如下:
package com.designPattern.mediator;

public class Client {
	
	public static void main(String[] args) {
		AbstractMediator mediator = new Mediator();
		System.out.println("---------采购人员采购电脑---------");
		Purchase purchase = new Purchase(mediator);
		purchase.buyIBMComputer(100);
		
		System.out.println("----------销售人员销售IBM电脑-----------");
		Sale sale = new Sale(mediator);
		sale.sellIBMComputer(1);
	
		System.out.println("-----------库房管理人员清库处理--------------");
		Stock stock = new Stock(mediator);
		stock.clearStock();
	}

}



运行结果如下:
---------采购人员采购电脑---------
IBM电脑的销售量为:27
采购IBM电脑:50台
----------销售人员销售IBM电脑-----------
库存数量为:99
销售IBM电脑1台
-----------库房管理人员清库处理--------------
清理存货数量为:99
折价销售IBM电脑99台
不再采购IBM电脑
分享到:
评论

相关推荐

    C#设计模式-吕震宇

    设计模式(22)-Strategy Pattern 设计模式(21)-Template Method Pattern 设计模式(20)-Visitor Pattern 设计模式(19)-Observer Pattern 设计模式(18)-Command Pattern 设计模式(17)-Chain of ...

    java设计模式---诙谐易懂版

    代理模式(Proxy Pattern)、单例模式(Singleton Pattern)、工厂方法模式...Pattern)、中介者模式(Mediator Pattern)、解释器模式(Interpreter Pattern)、享元模式(Flyweight Pattern)、备忘录模式(Memento ...

    设计模式---桥接模式

    桥接模式是一种结构型设计模式,它将抽象部分与实现部分分离,使它们可以独立进行变化。这种模式在软件工程中被广泛...对于初学者来说,通过学习和实践桥接模式,可以提高软件设计能力,更好地理解面向对象设计原则。

    design-pattern-java.pdf

    遍历聚合对象中的元素——迭代器模式(四) 遍历聚合对象中的元素——迭代器模式(五) 遍历聚合对象中的元素——迭代器模式(六) 中介者模式-Mediator Pattern 协调多个对象之间的交互——中介者模式(一) 协调多...

    java常用设计模式-中介者模式

    中介者模式(Mediator Pattern)是一种行为设计模式,它允许对象之间通过中介者对象进行通信,从而避免对象之间的直接耦合。中介者模式将对象之间的复杂关系转化为中介者和对象之间的简单关系,从而提高了系统的灵活...

    java设计模式-中介者模式

    设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段...

    设计模式 - 中介者模式(C++实例)

    **中介者模式(Mediator Pattern)**是一种行为设计模式,它定义了一个用来封装一系列对象交互的接口。在软件工程中,当多个对象之间存在复杂的相互依赖关系时,这种模式可以帮助我们降低系统的耦合度,使得各个对象...

    design-pattern-java-2 设计模式-java版

    行为型模式关注对象之间的通信,包括命令模式、解释器模式、迭代器模式、中介者模式、备忘录模式、观察者模式、状态模式、策略模式、模板方法模式、访问者模式等。命令模式将请求封装成对象,以便使用不同的请求、...

    设计模式-DesignPattern.zip

    在“设计模式-DesignPattern.zip”压缩包中,我们看到的是一个名为“DesignPattern-master”的项目,这通常是一个关于设计模式的学习或示例代码仓库。 设计模式通常分为三类:创建型模式、结构型模式和行为型模式。...

    c++设计模式-结构型模式-组合模式

    组合(Composite Pattern)模式的定义:有时又叫作整体-部分(Part-Whole)模式,它是一种将对象组合成树状的层次结构的模式,用来表示“整体-部分”的关系,使用户对单个对象和组合对象具有一致的访问性,属于结构...

    设计模式--观察者模式java例子

    观察者模式(Observer Pattern)是软件设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式常用于事件驱动的系统或者...

    JAVA设计模式-chm版

    包括责任链模式(Chain of Responsibility)、命令模式(Command)、解释器模式(Interpreter)、迭代器模式(Iterator)、中介者模式(Mediator)、备忘录模式(Memento)、观察者模式(Observer)、状态模式...

    设计模式 - Design Pattern

    "Design Pattern"这个压缩包文件很可能包含了一些关于设计模式的实例和文档,特别是提到了"design-pattern\doc\api"目录下的"index.html",这可能是一个交互式的文档或者教程,通过实例帮助开发者更好地理解设计模式...

    23种设计模式-C_版本

    设计模式 - Singleton Pattern 在软件系统中,经常有这样一些特殊的类,必须保证它们在系统中只存在一个实例,才能确保它们的逻辑正确性、以及良好的效率。这就是 Singleton Pattern 的设计动机。 Singleton ...

    design-pattern-java_设计模式_

    行为型模式涉及对象之间的责任分配,如命令模式、迭代器模式、观察者模式、职责链模式、策略模式、状态模式、模板方法模式和访问者模式。这些模式有助于更好地管理和组织代码中的算法和行为。例如,观察者模式是一种...

    JAVA设计模式-原则和23种设计模式归纳总结

    共有11种,分别是策略模式、模板方法模式、观察者模式、迭代器模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式和解释器模式。 在本资源中,我们还对每种设计模式进行了详细的介绍和分析...

    设计模式之中介者模式(Mediator Pattern)

    **设计模式之中介者模式(Mediator Pattern)** 在软件工程中,设计模式是一种解决常见问题的经验总结,它提供了一种可复用的解决方案。中介者模式是行为设计模式之一,其主要目的是降低多个对象之间的复杂性,通过...

    go的设计模式实例-go-design-pattern.zip

    在这个"Go设计模式实例-go-design-pattern.zip"压缩包中,我们可以找到一个名为"go-design-pattern-master"的项目,它很可能是包含多个Go语言实现的设计模式示例。这个项目可以帮助我们理解如何在Go中应用常见的设计...

    设计模式整理代码-pattern.zip

    - 中介者模式(Mediator):定义一个中介对象来简化原本复杂的对象交互。 - 观察者模式(Observer):定义对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。 -...

    GOF-设计模式-Design Patterns-英文原版-高清-有目录-有页码

    - **中介者**(Mediator):用一个中介对象来封装一系列的对象交互。 - **备忘录**(Memento):在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。 - **观察者**(Observer):定义对象间...

Global site tag (gtag.js) - Google Analytics