中介者模式

本文介绍了一种设计模式——中介者模式。通过一个实例演示了如何使用该模式将多个对象间的复杂交互封装到一个中介者对象中,从而降低系统的耦合度。文章详细解释了抽象中介者、具体中介者及同事类的实现。

用一个‘中介者’,封装很多对象之间的交互(对象之间的关系为复杂的网状结构)。耦合松离

使用该模式之后,以中介者为中心,的星状结构。


有2个类,每个类中都有一个数字,保持,B中数字永远是A的100倍。 AB类就为同事类。

抽象中介者:

abstract class AbstractMediator{
      private AbstractColleague A;
      private AbstractColleague B;
      public AbstractMediator(AbstractColleague a, AbstractColleague b){
           A = a; B=b;
      }
      public abstract void effectB();   //影响A类
      public abstract void effectA();   //影响B类
}


具体中介者:实现上面A类与B类之间的关系。(逻辑实现层)
public Mediator extends AbstractMediator{
       public Mediator(AbstractColleague a,AbstractColleague  b){
       super(a,b);
      }
       public void effectB(){
            int number = A.getNumber();
            B.setNumber(number*100);
       }
        public void effectA(){
            int number = B.getNumber();
            A.setNumber(number/100);
       }
        
}


A,B是同事类:由于有相同的属性,和方法所以可以抽象出一个类

abstract class AbstractColleague{
      private int number;
      getter,setter
      //重载 setter方法
      public abstract void setNumber(int number,AbstractMediator am);
}


具体A类实现:

class ColleagueA extends AbstractColleague{
       public void setNumber(int number,AbstractMediator am){
              this.number = number;
              am.effectB();
       }

}
class ColleagueB extends AbstractColleague{
       public void setNumber(int number,AbstractMediator am){
              this.number = number;
              am.effectA();
       }

}

客户端:

main(){
      AbstractColleague A = new ColleagueA();
      AbstractColleague B = new ColleagueB();
      //中介者
      AbstractMediator mediator = new Mediator(A,B);
     A.setNumber(100,mediator);
     B.setNumber(1000,mediator);
}

一般同事间是网格结构关系才使用。






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值