码迷,mamicode.com
首页 > 其他好文 > 详细

(行为型模式二)中介者模式

时间:2015-04-26 15:20:19      阅读:116      评论:0      收藏:0      [点我收藏+]

标签:设计模式

package com.modle;
/**
 * 中介者模式
 * @author k560
 *
 */

/*需求:产品A要比产品B贵100块,当改A的价格,B的价格也要同步改动,反过来也一样*/
public class Mediator extends AbstractMediator{
	
	private AbstracProduct productA;
	
	private AbstracProduct productB;
	
	public Mediator(AbstracProduct productA, AbstracProduct productB) {
		super();
		this.productA = productA;
		this.productB = productB;
	}

	
	@Override
	public void aAffectB() {
		this.productB.setPrice(this.productA.getPrice()-100);
		
	}

	@Override
	public void bAffectA() {
	this.productA.setPrice(this.productB.getPrice()+100);
	}
    
	public static void main(String[] args) {
		AbstracProduct pa=new ProductA();
		AbstracProduct pb=new ProductB();
		AbstractMediator mediator=new Mediator(pa, pb);
		pa.setPrice(1000,mediator);
		System.out.println(pb.getPrice());
		pb.setPrice(600,mediator);
		System.out.println(pa.getPrice());
	}
	
}
/*抽象中介者*/
abstract class AbstractMediator {
    
	abstract  void aAffectB ();
	
	abstract void  bAffectA ();
}
/*抽象产品*/
abstract class AbstracProduct {

	protected double price;

	public double getPrice() {
		return price;
	}
	public void setPrice(double price) {
		this.price = price;
	}
	public abstract void setPrice(double price,AbstractMediator mediator);
}

class ProductA extends AbstracProduct {
	
	@Override
	public void setPrice(double price, AbstractMediator mediator) {
           this.price=price;
           mediator.aAffectB();
	}
}

class ProductB extends AbstracProduct {
	@Override
	public void setPrice(double price, AbstractMediator mediator) {
         this.price=price;
         mediator.bAffectA();
	}
}

(行为型模式二)中介者模式

标签:设计模式

原文地址:http://blog.csdn.net/h348592532/article/details/45287715

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!