Tag: 设计原则

Liskov替换原则,前提条件和抽象方法

Liskov替换原则(LSP)说: 子类型不能强化前提条件。 在C#中,我可能违反以下原则: public class A { public virtual void DoStuff(string text) { Contract.Requires(!string.IsNullOrEmpty(text)); } } public class B : A { public override void DoStuff(string text) { Contract.Requires(!string.IsNullOrEmpty(text) && text.Length > 10); } } 但是,如果A.DoStuff是一个abstract方法会发生什么: public class A { public abstract void DoStuff(string text); } public class B : A { public override void […]

我应该喜欢IEnumerable 还是Arrays?

在我工作的许多项目中,每当我必须返回一个只读集合时,我使用IEnumerable接口并使其类型特定如下: Public ReadOnly Property GetValues() As IEnumerable(Of Integer) Get ‘code to return the values’ End Get End Property 大多数时候,我返回一个List,但是在一些函数和只读属性中,我返回一个数组,这个目的也可以通过扩展方法的礼貌来实现。 我的问题是我是否通过返回IEnumerable而不是特定类型(例如: List , HashSet , Stack或Array s)来违反任何设计原则 ?

UML帮助C#设计原则

我在下面了解UML时遇到问题: 具体来说, PersistentSet和ThirdPartyPersistentSet之间的关系是什么? PersistentObject和ThirdPartyPersistentSet之间的关系是什么? 请注意,UML来自C#中的敏捷原则,模式和实践。作者:Martin C. Robert,Martin Micah 2006.第10章 提前致谢!