我是模式的新手,这是一个新的问题。我最近开始研究SOLID原理以及设计模式。在浏览了两者之后,我想知道是否有任何方法可以在一个地方定义SOLID和设计模式之间的关系。例如..
S - 模式a,模式B
O - Patten c,d,e
L
我
d
同样明智的,我认为这将有助于更好地理解原则和模式。
由于 拉吉
答案 0 :(得分:3)
我认为SOLID是模式的基础。有很多例子。采用您最喜欢的GoF设计模式,并使用SOLID将其分解。并非所有原则都适用,但这是理解模式的好方法。
例如,战略模式有具体的策略:
每个具体策略都适用单一责任原则。策略层次结构打开表示可扩展性,而策略界面已关闭表示修改(因此客户端保持稳定)。 Liskov 原则适用于Strategies,但也许它不是一个很好的例子。 接口隔离原则由单个Strategy接口演示(与某些具有大量方法的接口相对)。在我看来,依赖性倒置原则并不那么明显。
答案 1 :(得分:2)
设计模式无法真正分配到SOLID首字母缩略词的一个字母。设计模式实际上帮助您(或至少他们应该!)以尊重SOLID原则的所有五个点的方式设计您的软件。即使您没有使用设计模式,这些原则也是您在进行面向对象编程时应该牢记的某种指导原则。
话虽如此,确实存在设计模式的类别。例如,四个模式的组合属于creational, structural and behavioral类别。
答案 2 :(得分:0)
我认为与以下几点有很好的关系: 开放封闭原则意味着战略模式。 除此之外,在许多设计模式中都应用了“单一职责”。 依赖注入与MVC设计模式有关。 但是GOF和SOLID之间并没有真正非常直接的关系
答案 3 :(得分:0)
一些GoF设计模式可以帮助您实现OCP,例如模板方法(通过继承),策略或装饰器(聚合/组合)。