したがって、私の問題はMVCスタイルのアプローチのコンテキストにあります。ここでのコードはPHPですが、これが独立した設計の問題であることを期待しています。
abstract class Controller
{
private $domain;
private $view;
function __construct() {
$this->domain = new Domain;
$this->view = new View;
}
}
したがって、この抽象クラスから継承する一連のクラス(BlogPageController、ErrorPageControllerなど)を作成します。これらのサブクラスのコンストラクターは次のようになります。
class BlogPageController
{
function __construct() {
$this->domain = new BlogPageDomain;
$this->view = new BlogPageView;
}
}
私が対処したい問題は、具象サブクラスのコンストラクターを常に定義する必要があることです-親クラスのコンストラクターにこれを実行させる方法はありますが、(たとえば)汎用ドメインオブジェクトを作成する代わりに、次の条件があります。
$this->domain = new Domain;
一致するドメインが作成されます。
$this->domain = new <concrete class>Domain;
上記の例のように?
抽象Controller
クラスは、適切な<concrete class>Domain
クラスを作成できません。これは、それが属する具体的なクラス、および関連付けられるドメインクラスとビュークラスがわからないためです。
できることは、派生クラスのコンストラクターからDomainクラスとViewクラスを渡すことです。
abstract class Controller
{
private $domain;
private $view;
function __construct($aDomain, $aView) {
$this->domain = $aDomain;
$this->view = $aView;
}
}
class BlogPageController extends Controller
{
function __construct() {
parent::__construct(new BlogPageDomain, new BlogPageView);
}
}