原则A类应该有一个,
而且只有一个理由改变。OCP:开放封闭原则
应该能够扩展课程
行为,无需对其进行修改。LSP:Liskov换人
原则派生类必须是
可替代其基础
类。ISP:接口隔离
原理做细粒
特定于客户端的接口。DIP:依赖关"/>

关于oop:设计原则

关于oop:设计原则

Design Principles

在进行课堂设计时,通常遵循哪些原则?


面向对象的类设计原理(" SOLID"原理)

  • SRP:单一责任
    原则A类应该有一个,
    而且只有一个理由改变。
  • OCP:开放封闭原则
    应该能够扩展课程
    行为,无需对其进行修改。
  • LSP:Liskov换人
    原则派生类必须是
    可替代其基础
    类。
  • ISP:接口隔离
    原理做细粒
    特定于客户端的接口。
  • DIP:依赖关系
    反演原理取决于
    抽象,而不是具体。

资料来源:http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod


别忘了得墨meter耳定律。


S.O.L.I.D.原则。
或者至少我尽量不要让他们偏离太多。


最基本的设计模式应该是KISS(保持简单愚蠢)
这意味着有时根本不对某些元素使用类是正确的解决方案。

那张和CRC(类,责任,协作者)卡(将卡记在头文件中,而不是写在实际卡上,因为它们也很容易理解文档)


如上所述,一些基本的面向对象设计原则是OCP,LSP,DIP和ISP。

以下是由Object Mentor的Robert C. Martin撰写的一篇出色的概述:OOD原理和模式


松散耦合,高度凝聚力。

组成超过继承。


"资源获取就是初始化"范例非常方便,尤其是在用C ++编写并处理操作系统资源(文件句柄,端口等)时。

这种方法的主要好处是,一旦创建了一个对象,它便是"完整的"-不需要两阶段初始化,也不需要部分初始化对象。


通常,遵循领域驱动设计是一个很好的原则。


我要添加的所有内容是分层,在应用程序中定义层,层的总体责任以及它们如何使两层相互作用。在该层中只应允许与该层具有相同职责的类。这样做可以解决很多混乱情况,确保可以正确处理异常,并确保新开发人员知道将代码放置在何处。

另一种设计方法是通过将您的类设计为可配置的,从而创建一种机制,在该机制中可以将配置插入类中,而不是覆盖子类中的方法,确定哪些更改,查看是否可以进行配置,并确保此功能是可配置的。从配置派生


SOLID原则和Liskov模式,以及单一责任模式。


基本上,我不会对接口进行编程。我试图封装那些因情况而异的代码,以避免代码重复,并将代码隔离为可管理的(对我而言)的块。以后,如果需要,我可以轻松地重构代码。


我通常尝试使该类适合oo设计模式之一。


推荐阅读