specification-pattern

    2熱度

    1回答

    我知道設計模式是由設計而不是由特定的代碼設置的,但有時我擔心我會過多地彎曲模式,不再遵循設計。 對於示例規範模式是這樣的: public interface ISpecification<T> { bool IsSatisfiedBy(T candidate); } 但對我來說這不是很可讀: _customerAccountIsActive .And(_hasReachedRe

    6熱度

    2回答

    所以,我在這裏看過一些關於規範模式的文章,但還沒有找到答案。 我的問題是,在一個n層架構中,我的規範究竟應該是「新」了嗎? 我可以把它們放在我的服務層(又名,應用層它有時也被稱爲...基本上,一些在.aspx隱藏代碼會說話),但我做的是,我覺得自己像讓業務規則泄漏出域。如果以其他方式(除了服務層)訪問域對象,那麼域對象不能強制執行他們自己的業務規則。 我可以通過構造函數注入將規範注入我的Model

    0熱度

    2回答

    下面是一個設計用於Entity Framework的通用庫的實現。忽略這個練習的'善良'或'不好'... 這個在NHibernate中的代碼是什麼樣的? 乾杯, Berryl public class Repository<T> : IRepository<T> where T : class { protected ObjectContext Context; protected Obj

    1熱度

    1回答

    我無法正確獲得此設計。我正在使用存儲庫模式來管理我的數據層。在我的一個控制器(MVC3)中,我構建了一個需要執行連接的LINQ查詢。我有2個關於這方面的問題: 是最好添加一個方法到我的倉庫來執行所有連接,投影等?我對此有點猶豫,因爲這會導致我的存儲庫中不斷增長的合同定義? 比方說,我有一個Post回購的List()方法返回所有項目。我目前不能在linq(join)查詢中使用此方法,因爲它無法將其轉

    3熱度

    1回答

    有時您需要定義一些業務規則,並且規範模式是一個有用的工具。例如: public class CanBorrowBooksSpec : ISpecification<Customer> { public bool Satisfies(Customer customer) { return customer.HasLibraryCard && !cus

    1熱度

    1回答

    我將編寫一個存儲過程,它將基於查詢撤回X個記錄。該SP可能需要在執行搜索時鎖定記錄。我也使用EF,我知道不能使用悲觀鎖定。 而不是在查詢本身有過濾邏輯,我想使用規範模式,因此業務邏輯將決定查詢。如果我使用這種模式並將規範傳遞到我的存儲庫中,然後又調用SP,SP如何知道如何處理規範? 該規範可以包含多個表並在不同列上排序的標準。 在這種情況下使用規範模式是否有意義,還是應該創建SP,並在其中定義查詢

    0熱度

    1回答

    假設您正在撰寫博客網站。它顯示由多位作者按「優先級」排序的最近博客文章。頂級的最高優先級。重點是通過一些公式涉及確定: 怎麼最近的帖子發表 有多少評論吸引 訂單必須始終實時準確。 按優先級排序很容易。問題是讓我們說,我們的網站非常受歡迎,評論以每分鐘數百的速度飛行。他們飛過幾十個帖子。 有沒有處理這種情況的模式?換句話說,我們可以做什麼,而不僅僅是在對帖子發表評論時更新優先級字段,然後在每次加載頁

    1熱度

    2回答

    我正在開發一個使用域驅動設計的應用程序。我一直在使用的模式之一是Repository模式。爲了簡單起見,假設我有以下類和接口。 汽車 - 代表汽車領域概念的領域類。 public class Car { public int Id {get;private set;} public string SomeUniqueCode {get;private set;} } IC

    4熱度

    1回答

    組合規範模式有許多基於LINQ的實現。我還沒有看到一個使用了包容的。 是否有任何這樣的例子已被記錄(博客等)或發佈爲開源?通過讓ExpressionVisitor將每個規範轉換爲規範的邏輯形式(CNF/DNF),我對此有一個想法和概念證明,但我擔心這太過複雜。有沒有更好的辦法?

    3熱度

    1回答

    我已經定義了一個規範爲Expression<Func<User, bool>>類型的對象,像這種類型的表達式的謂詞: public static Expression<Func<User, bool>> IsSystemUser { get { return user => user.UserID == -1; } } 這寫在擴展方法的語法查詢工作不