原则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设计模式之一。


推荐阅读

    linux命令连接数修改?

    linux命令连接数修改?,服务,系统,网络,环境,密码,情况,地址,命令,服务器,表

    linux修改退出命令?

    linux修改退出命令?,状态,档案,时间,电脑,命令,编辑,数据,文件,内容,冒号,lin

    linux命令查看接口?

    linux命令查看接口?,系统,设备,地址,网络,信息,电脑,软件,情况,命令,灵活,lin

    linux命令修改地址?

    linux命令修改地址?,地址,系统,网络,代码,信息,服务,基础,管理,命令,虚拟机,

    修改linux时间的命令?

    修改linux时间的命令?,时间,系统,命令,标准,大陆,国家,网上,资料,信息,时区,l

    linux修改网关命令行?

    linux修改网关命令行?,地址,代码,系统,网络,信息,网关,服务,密码,环境,数字,

    linux脚本命令修改?

    linux脚本命令修改?,密码,系统,文件,资料,工具,软件,基础,地址,标准,命令,lin

    修改时间命令linux?

    修改时间命令linux?,时间,系统,命令,大陆,国家,信息,时区,终端,时分,日期,如

    linux中路径修改命令?

    linux中路径修改命令?,系统,命令,首次,工作,名称,目录,文件,环境变量,路径,

    linux修改脚本的命令?

    linux修改脚本的命令?,系统,密码,服务,工作,工具,环境,信息,百度,代码,脚本,

    linux修改命令所属组?

    linux修改命令所属组?,系统,信息,档案,工具,状态,文件,命令,设备,检测,环境,l

    linux下修改端口命令?

    linux下修改端口命令?,代码,服务,端口,系统,文件,编辑,后果,命令,字段,下面,L

    linux修改壁纸命令?

    linux修改壁纸命令?,图片,系统,环境,电脑,软件,项目,管理,服务,基础,数据,如

    linux修改名称命令?

    linux修改名称命令?,系统,名称,图片,查询系统,代码,名字,命令,用户,文件名,

    linux修改时区的命令?

    linux修改时区的命令?,时间,系统,大陆,国家,标准,时区,命令,日期,终端,方法,L

    linux网络修改命令?

    linux网络修改命令?,地址,网络,系统,工作,服务,代码,管理,命令,工具,设备,Lin

    linux修改内存命令?

    linux修改内存命令?,系统,信息,标准,工具,数据,在线,内存,命令,分区,大小,Lin

    linux修改用户名命令?

    linux修改用户名命令?,系统,密码,查询系统,代码,数字,用户名,命令,第三,电

    linux命令换行后修改?

    linux命令换行后修改?,服务,系统,本行,代码,环境,工作,命令,文件,终端,字符,

    linux修改端口号命令?

    linux修改端口号命令?,代码,服务,系统,端口,工作,邮箱,文件,编辑,命令,后果,