正在通過規範對象是矯枉過正在庫正在通過規範對象是矯枉過正在庫
我問這是因爲,如果我們像FindCustomersCreatedToday法通過規範對象,
class CustomerRepository
{
public List<Customer> FindCustomersCreatedToday(ISpecification ISCreatedToday)
{
List<Customer> customers= Load all customers from db;
List<Customer> newList=new List<>();
foreach(var customer in customers)
{
if(ISCreatedToday.SatisfiedBy(customer)
{
newList.Add(customer);
}
}
}
}
以上
我在我看到的大多數網站中實現,他們從數據庫中獲取所有實體並循環遍歷它們,並將它們中的每一個傳遞給規範,但我不喜歡一次加載所有實體然後創建一個新的過濾列表的想法。
假設我有10000個客戶,並且只有10個通過了這個標準。
是不是殺過規格?
我認爲在規範中,對象只有一個屬性。 IsSatisfiedBy返回布爾值。但就你而言,事實並非如此。此外,如果您將ISpecification作爲參數傳遞,那麼它是如何知道它具有Start和End屬性的,因爲ISpecification是一個接口,或者您必須公開它,而我認爲這不是一個好主意。 – kamal
檢查此http://linqspecs.codeplex.com/ – kamal
@kamal:IsSatisfiedBy不是必需的。如果您只使用規範傳遞到存儲庫,那麼擁有它是很好的,但可能並不需要。我用代碼和一些解釋更新了答案。 – Dmitry