2017-08-08 63 views
0

我正在開發一個應用程序,該應用程序在驗證之後擦除HTML提要。這些網站僅支持電子郵件/密碼身份驗證,但某些集成可能需要其他信息。所以我的問題現在具體應該在創建域事件和聚合時獲得?我與Prooph合作過,並創建了僅處理單個實體類型的簡單聚合和域事件。但現在我想知道聚合和域名事件是否應該專門針對這些第三方網站刮板。是否應該爲每個feed scraper提供一個事件,或者創建一個通用事件並更好地聚合?每個聚合的屬性可能不同。Aggophate,具有Prooph的DomainEvent

class WebsiteA extends AggregateRoot 
{ 
    private $id; 

    private $email; 

    private $password; 

    public static function initiate($id, $email, $password) 
    {...} 
} 

class WebsiteB extends AggregateRoot 
{ 
    private $id; 

    private $email; 

    private $password; 

    private $accountIds = []; 

    private $userSalt; 

    public static function initiate($id, $email, $password, $accountIds, $userSalt) 
    {...} 
} 

然後域事件

class WebsiteAWasInitiated extends AggregateChanged 
{ 
    public static function withUser($id, $email, $password){} 
} 

class WebsiteBWasInitiated extends AggregateChanged 
{ 
    public static function withUser($id, $email, $password, $accountIds, $userSalt){} 
} 

或者它會更好地創建一個單一的骨料和域事件類似的東西?這兩個網站都使用。請記住,支持的網站列表將會增加。

class WebsiteScraper extends AggregateRoot 
{ 
    private $id; 

    private $credentials; 

    public static function initiate($id, $credentials) 
    {...} 
} 

class WebsiteScraperWasInitiated extends AggregateChanged 
{ 
    public static function withUser($id, $credentials){} 
} 

回答

0

這是一個更DDD相關的問題,答案是「它取決於」。你的刮刀數量會增長多少,你不能爲每一個刮刀添加代碼?然後嘗試使用通用刮板聚合。如果您的刮刀數量有限,您可以爲其中的每一個使用自定義刮刀。