您的位置:首页 > 编程语言 > PHP开发

php,java实现中介者模式

2017-03-25 15:47 399 查看
当多个对象之间产生网状的关系时,适合中介者模式,把多对多的依赖转化为只对中介者的依赖

类图



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();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java php