1222得票35回答
Liskov替换原则的一个例子是什么?

我听说里氏替换原则(Liskov Substitution Principle,简称LSP)是面向对象设计的一个基本原则。那么它是什么,有哪些使用示例呢?

110得票13回答
101得票3回答
你能用一个好的C#例子解释一下Liskov替换原则吗?

你能用一个简单的C#例子来解释Liskov替换原则(SOLID中的“L”)吗?并覆盖该原则的所有方面,尽可能以通俗易懂的方式表达。 如果可能的话。

77得票1回答
F#中的应用程序架构/组合

最近我一直在使用C#进行SOLID原则的开发,实际上我现在所做的就是组合函数。然而最近我重新开始关注F#,认为它应该更适合我当前的工作,因此我想尝试将一个真实的C#项目移植到F#中,作为一个概念验证。我认为我可以编写出实际的代码(以非惯用方式),但我无法想象如何设计架构,以便能够像在C#中那样...

77得票6回答
在SOLID中,SRP和ISP有什么区别?(单一职责原则和接口隔离原则)

SOLID中的“接口隔离原则”与“单一职责原则”有何不同? 维基百科中对于SOLID的解释为: 接口隔离原则将非常庞大的接口分割成更小的特定接口,让客户端只需要知道他们感兴趣的方法。 但是,在我看来,这听起来就像是将 SRP 应用到接口和类上。毕竟,如果一个接口只负责一个概念,那...

71得票6回答
里氏替换原则 - 没有重写/虚方法?

我对里氏替换原则的理解是,基类的某些属性或实现的行为,在派生类中也应该保持正确性。 我想这意味着当一个方法在基类中被定义时,在派生类中就不应该被重写,因为用基类代替派生类将会产生不同的结果。我想这也意味着拥有(非纯)虚方法是不好的事情? 我觉得自己可能对这个原则有一些误解。如果没有,我不明...

68得票10回答
SOLID与YAGNI对比

我经常听到的不遵循SOLID面向对象设计原则的最常见论点之一是YAGNI(尽管争辩者经常没有这么说): "把特性X和特性Y放在同一个类中没问题。这很简单,为什么要增加一个新类呢(即增加复杂性)?" "是的,我可以直接把所有业务逻辑放入GUI代码中,这样会更容易和更快捷。这将永远是唯一的GU...

63得票7回答
单一职责原则 vs 贫血领域模型反模式

我参与一个注重单一职责原则的项目。我们有许多小型类,情况非常简单。然而,我们的领域模型很贫弱 - 模型类中没有任何行为,它们只是属性袋。这不是对我们设计的抱怨 - 它实际上似乎运行得非常好。 在设计评审过程中,每当系统添加新行为时,SRP就会被提出来,因此新行为通常会出现在新类中。这使得事情...

62得票14回答
“开闭原则”背后的意义和理由是什么?

开闭原则指出,软件实体(类、模块等)应该对扩展开放,但对修改关闭。这意味着什么,为什么它是良好面向对象设计的重要原则?