Skip to content

Commit 6d2f308

Browse files
author
Dominik Liebler
committed
reworked the Mediator pattern
1 parent 0d24d48 commit 6d2f308

File tree

11 files changed

+70
-120
lines changed

11 files changed

+70
-120
lines changed

Behavioral/Mediator/ConcreteMediator.php

Lines changed: 0 additions & 47 deletions
This file was deleted.

Behavioral/Mediator/Mediator.php

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,5 @@
44

55
interface Mediator
66
{
7-
public function sendResponse(string $content);
8-
9-
public function makeRequest();
10-
11-
public function queryDb();
7+
public function getUser(string $username): string;
128
}

Behavioral/Mediator/README.rst

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -30,33 +30,27 @@ Mediator.php
3030
:language: php
3131
:linenos:
3232

33-
ConcreteMediator.php
34-
35-
.. literalinclude:: ConcreteMediator.php
36-
:language: php
37-
:linenos:
38-
3933
Colleague.php
4034

4135
.. literalinclude:: Colleague.php
4236
:language: php
4337
:linenos:
4438

45-
Subsystem/Client.php
39+
Ui.php
4640

47-
.. literalinclude:: Subsystem/Client.php
41+
.. literalinclude:: Ui.php
4842
:language: php
4943
:linenos:
5044

51-
Subsystem/Database.php
45+
UserRepository.php
5246

53-
.. literalinclude:: Subsystem/Database.php
47+
.. literalinclude:: UserRepository.php
5448
:language: php
5549
:linenos:
5650

57-
Subsystem/Server.php
51+
UserRepositoryUiMediator.php
5852

59-
.. literalinclude:: Subsystem/Server.php
53+
.. literalinclude:: UserRepositoryUiMediator.php
6054
:language: php
6155
:linenos:
6256

Behavioral/Mediator/Subsystem/Client.php

Lines changed: 0 additions & 21 deletions
This file was deleted.

Behavioral/Mediator/Subsystem/Database.php

Lines changed: 0 additions & 13 deletions
This file was deleted.

Behavioral/Mediator/Subsystem/Server.php

Lines changed: 0 additions & 14 deletions
This file was deleted.

Behavioral/Mediator/Tests/MediatorTest.php

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,18 @@
22

33
namespace DesignPatterns\Tests\Mediator\Tests;
44

5-
use DesignPatterns\Behavioral\Mediator\ConcreteMediator;
6-
use DesignPatterns\Behavioral\Mediator\Subsystem\Client;
7-
use DesignPatterns\Behavioral\Mediator\Subsystem\Database;
8-
use DesignPatterns\Behavioral\Mediator\Subsystem\Server;
5+
use DesignPatterns\Behavioral\Mediator\Ui;
6+
use DesignPatterns\Behavioral\Mediator\UserRepository;
7+
use DesignPatterns\Behavioral\Mediator\UserRepositoryUiMediator;
98
use PHPUnit\Framework\TestCase;
109

1110
class MediatorTest extends TestCase
1211
{
1312
public function testOutputHelloWorld()
1413
{
15-
$client = new Client();
16-
new ConcreteMediator(new Database(), $client, new Server());
14+
$mediator = new UserRepositoryUiMediator(new UserRepository(), new UI());
1715

18-
$this->expectOutputString('Hello World');
19-
$client->request();
16+
$this->expectOutputString('User: Dominik');
17+
$mediator->printInfoAbout('Dominik');
2018
}
2119
}

Behavioral/Mediator/Ui.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<?php declare(strict_types=1);
2+
3+
namespace DesignPatterns\Behavioral\Mediator;
4+
5+
class Ui extends Colleague
6+
{
7+
public function outputUserInfo(string $username)
8+
{
9+
echo $this->mediator->getUser($username);
10+
}
11+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<?php declare(strict_types=1);
2+
3+
namespace DesignPatterns\Behavioral\Mediator;
4+
5+
class UserRepository extends Colleague
6+
{
7+
public function getUserName(string $user): string
8+
{
9+
return 'User: ' . $user;
10+
}
11+
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
<?php declare(strict_types=1);
2+
3+
namespace DesignPatterns\Behavioral\Mediator;
4+
5+
class UserRepositoryUiMediator implements Mediator
6+
{
7+
/**
8+
* @var UserRepository
9+
*/
10+
private $userRepository;
11+
12+
/**
13+
* @var Ui
14+
*/
15+
private $ui;
16+
17+
public function __construct(UserRepository $userRepository, Ui $ui)
18+
{
19+
$this->userRepository = $userRepository;
20+
$this->ui = $ui;
21+
22+
$this->userRepository->setMediator($this);
23+
$this->ui->setMediator($this);
24+
}
25+
26+
public function printInfoAbout(string $user)
27+
{
28+
$this->ui->outputUserInfo($user);
29+
}
30+
31+
public function getUser(string $username): string
32+
{
33+
return $this->userRepository->getUserName($username);
34+
}
35+
}

0 commit comments

Comments
 (0)