Так что, если у меня есть интерфейс iConnection
interface iConnection
{
}
, который реализуется с помощью:
class OutlookConnection implements iConnection
{
}
И
class GoogleConnection implements iConnection
{
}
И другого интерфейса iComparison
interface iComparison
{
}
Который реализуется:
class OutlookComparison implements iComparison
{
private $connection;
public function __construct($user, iConnection $iConnection) {
$this->connection = $iConnection;
}
}
И
class GoogleComparison implements iComparison
{
private $connection;
public function __construct($user, iConnection $iConnection) {
$this->connection = $iConnection;
}
}
В основной программе я хочу иметь возможность переключаться между GoogleComparison и OutlookComparison на основедля типа iConnection без использования оператора if или switch:
public function __construct(iConnection $connection)
{
$this->connect = $connection;
if($this->connection instanceof GoogleConnection){
$this->comparison = new GoogleComparison();
}
elseif($this->connection instanceof OutlookConnection){
$this->comparison = new OutlookComparison();
}
}
Можно ли этого достичь в этом конструкторе без оператора switch или if?