我听说里氏替换原则(Liskov Substitution Principle,简称LSP)是面向对象设计的一个基本原则。那么它是什么,有哪些使用示例呢?
在使用Swift时玩耍,来自Java背景,为什么要选择结构体而不是类?似乎它们是相同的东西,只是结构体提供的功能较少。那为什么要选择它呢?
我对里氏替换原则的理解是,基类的某些属性或实现的行为,在派生类中也应该保持正确性。 我想这意味着当一个方法在基类中被定义时,在派生类中就不应该被重写,因为用基类代替派生类将会产生不同的结果。我想这也意味着拥有(非纯)虚方法是不好的事情? 我觉得自己可能对这个原则有一些误解。如果没有,我不明...
开闭原则指出,软件实体(类、模块等)应该对扩展开放,但对修改关闭。这意味着什么,为什么它是良好面向对象设计的重要原则?
这是一个有关Pipeline实现的设计问题。以下是我的简单实现。 管道中各步骤/阶段的接口: public interface Step<T, U> { public U execute(T input); } 管道中步骤/阶段的具体实现: public clas...
能否给我一个单一职责原则的例子?我试图理解在实践中,一个类具有单一职责意味着什么,因为我担心我可能每天都会违反这个规则。
在我参与的许多项目中,每当我需要返回只读集合时,我使用 IEnumerable<T> 接口,并将其类型指定如下: Public ReadOnly Property GetValues() As IEnumerable(Of Integer) Get 'co...
我刚学习Ruby on Rails,阅读了这些文章: Ruby中的设计模式:观察者、单例 Ruby中的设计模式 但是我不太理解设计模式和设计原则之间的实际区别。请有经验的人士解释一下这两者的区别吗?
接口隔离原则(ISP)指出,许多客户端特定的接口优于一个通用接口。为什么这很重要?
在进行大型项目时,多任务处理有时会导致灾难性后果,因为多个线程访问了共享资源,从而导致共享资源的变异。这样就很难调试和跟踪错误的起源以及它是由什么引起的。这让我想,是否有设计模式可以用于设计多线程程序? 我非常欢迎您对此发表看法和评论。如果有人能提出良好的设计实践,可供我们遵循,使我们的程序...