php,java实现中介者模式

当多个对象之间产生网状的关系时,适合中介者模式,把多对多的依赖转化为只对中介者的依赖

类图
这里写图片描述

java实现

中介者抽象类

public abstract class AbsMediation {

    private Colleague1 colleague1;

    private Colleague2 colleague2;

    public void setColleague1(Colleague1 colleague1){
        this.colleague1 = colleague1;
    }

    public void setColleague2(Colleague2 colleague2){
        this.colleague2 = colleague2;
    }

    public Colleague1 getColleague1(){
        return colleague1;
    }

    public Colleague2 getColleague2(){
        return colleague2;
    }

    public abstract void doSomething1();

    public abstract void doSomething2();
}

中介者实现类

public class Mediation extends AbsMediation {

    @Override
    public void doSomething1() {
        this.getColleague1().selfmethod1();
        this.getColleague2().selfMethod2();
    }

    @Override
    public void doSomething2() {
        this.getColleague1().selfmethod1();
        this.getColleague2().selfMethod2();
    }
}

具体逻辑抽象类

public class AbsColleague {

    protected AbsMediation absMediation;

    public AbsColleague(AbsMediation absMediation){
        this.absMediation = absMediation;
    }
}

实现类1

public class Colleague1 extends AbsColleague {

    public Colleague1(AbsMediation absMediation) {
        super(absMediation);
    }

    public void selfmethod1(){

    }

    public void publishMethod1(){

    }
}
public class Colleague2 extends AbsColleague {

    public Colleague2(AbsMediation absMediation) {
        super(absMediation);
    }

    public void selfMethod2(){

    }

    public void publishMethod2(){

    }
}

php实现

abstract class AbsColleague
{
    protected $mediation;
    public function __construct(AbsMediation $mediation)
    {
        $this->mediation = $mediation;
    }
}


class Collegue1 extends AbsColleague
{
    public function __construct(AbsMediation $mediation)
    {
        parent::__construct($mediation);
    }

    public function selfFunction1()
    {
        echo 'selfFunction1';
    }

    public function publishFunction1()
    {
        echo 'publishFunction1';
    }
}


class Collegue2 extends AbsColleague
{
    public function __construct(AbsMediation $mediation)
    {
        parent::__construct($mediation);
    }

    public function selfFunction2()
    {
        echo 'selfFunction2';
    }

    public function publishFunction2()
    {
        echo 'publishFunction2';
    }

}
abstract class AbsMediation
{
    protected $collegue1;
    protected $collegue2;

    public function setCollegue1(Collegue1 $collegue1)
    {
        $this->collegue1 = $collegue1;
    }

    public function setCollegue2(Collegue2 $collegue2)
    {
        $this->collegue2 = $collegue2;
    }

    public function getCollegue1()
    {
        return $this->collegue1;
    }

    public function getCollegue2()
    {
        return $this->collegue2;
    }

    public abstract function doSomething1();

    public abstract function doSomething2();
}


class Mediation extends AbsMediation
{
    public function doSomething1()
    {
        $this->collegue1->selfFunction1();
        $this->collegue2->selfFunction2();
    }

    public function doSomething2()
    {
        $this->collegue1->selfFunction1();
        $this->collegue2->selfFunction2();
    }
}


$mediation = new Mediation;

$collegue1 = new Collegue1($mediation);
$collegue2 = new Collegue2($mediation);

$mediation->setCollegue1($collegue1);
$mediation->setCollegue2($collegue2);
$mediation->doSomething1();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值