我需要複雜多類型(<TLeft,TRight>
)規範,比如:規格模式:多類型複合規格
public class AndSopecification<TLeft,TRight>
{
public AndSpecification(ISpecification<TLeft> leftSide, ISpecification<TRight> rightSide)
{
}
.
.
.
}
但是,所有規格的例子,我看實現單一類型(<T>
),如:
public sealed class AndSpecification<T> : CompositeSpecification<T>
{
public AndSpecification(ISpecification<T> leftSide, ISpecification<T> rightSide)
{
}
.
.
.
}
是否有任何問題,如果我創建像這樣複雜的規格:
new AndSpecification<Foo,Bar>(new FooSpecification(),new BarSpecification()).SatisfiedBy();
因此,我可以在不同的情況下相互重複使用所有規格,然後我可以擁有單一的唯一過程點,這些點可以是更復雜規格樹的組成單元。
但我找不到這樣的實現。
我在一條正確的道路上嗎?
編輯:
我翻譯哪些客戶每次使用的條件語句,爲specification
,到處重用他們的客戶重用句子
(在每一個相關logic
,query predicate
,business rule validation
。 ..,我認爲這些specifications
自然是相同的在這些情況下)
而且作爲客戶,我創建composite specifications
,
但我有不同的基礎設施訪問他們的情況下,每一個(query predicate
,business rule validation
,...)
你確定你需要它嗎?將一個特定的用例標準封裝在一個對象中,而不是編寫_n_通用標準,這是非常簡單和有效的。 – MikeSW 2014-10-18 13:57:02
@MikeSW:爲什麼我應該重寫說'IsLogedInUserAdminSpecification'應該根據每個業務邏輯(以及在我定義的每個'Specification中)檢查? – Mohsen 2014-10-19 05:07:13
該檢查不應該是你的域的一部分,它是基礎設施的一部分。 – MikeSW 2014-10-19 14:06:56