当前位置: 首页 > news >正文

C++ 面向对象包含哪些设计原则

设计模式是由设计原则迭代出来的

  1. 开闭原则:一个类应该对扩展开放,对修改关闭

    稳定的部分稳定住,变化的部分扩展

    扩展可以通过继承和组合

    相关原则:单一职责原则、里氏替换原则、接口隔离原则

  2. 单一职责原则:一个类应该仅有一个引起它变化的原因

  3. 里氏替换原则:子类方法复写父类方法时,需要实现父类方法的职责,避免之前调用发类方法的地方错误

    场景:多态中虚函数覆盖

    如果没有实现,原来调用父类方法的地方可能出错

    目标:对扩展开放、约束了扩展中的继承

  4. 接口隔离原则:不应该强迫客户依赖于它不用的方法:通过public、private、protected;一个类对另一个类的依赖应建立在最小的接口上

  5. 迪米特原则:最少知道原则;尽量降低类与类之间的耦合度

    一个对象对其他对象保持最小的了解

    目标:

    • 高内聚:相近的功能应该放在同一个类中,不相近不要放在同一个类中
    • 低耦合:类与类之间的依赖关系要简单清晰;依赖越少越好

    要求:

    • 不该有直接依赖关系的类之间,不要有依赖
    • 有依赖关系的类之间,尽只依赖必要接口
class Network{
public:int Write(int fd,unsigned char* buf,size_t sz);int read(int fd,unsigned char *buf,size_t sz);};
class HTTP{
private:Network *pNet;
};
class Protobuffer{Network *pNet;
};class IEncode{
public:unsigned char * encode(HTTP *p) = 0;
};
class IDecode{json * decode(HTTP *p);
};
class A:public IEncode,IDecode{unsigned char*encode(HTTP *p);json * decode(HTTP *p);
};
class B:public IEcode{};
class C:public IDecode{};
  1. 依赖倒置原则:高层模块不应该依赖底层模块,两者都依赖于抽象;抽象不应该依赖具体实现,具体实现应该依赖于抽象;抽象确定稳定点

    目标:高内聚,低耦合

    要求:

    • 高层模块不应该依赖低层模块,两者都依赖于抽象
    • 抽象不应该依赖于具体实现
  2. 组合优于继承


获取更多Linux C/C++资料

http://www.lryc.cn/news/493024.html

相关文章:

  • 微信小程序首页搜索框的实现教程
  • android集成FFmpeg步骤以及常用命令,踩坑经历
  • Go错误与日志处理—推荐实践
  • Android 13 Aosp Settings Android Studio版本
  • Jedis存储一个以byte[]的形式的对象到Redis
  • updatexml报错注入原理分析
  • 蓝桥杯c++算法秒杀【6】之动态规划【上】(数字三角形、砝码称重(背包问题)、括号序列、组合数问题:::非常典型的必刷例题!!!)
  • 【Qt】重写QComboBox下拉展示多列数据
  • 【mac】终端左边太长处理,自定义显示名称(terminal路径显示特别长)
  • 基于Springboot的流浪宠物管理系统
  • web博客系统的自动化测试
  • 【论文阅读】Multi-level Semantic Feature Augmentation for One-shot Learning
  • 网络知识面试
  • 图片预览 图片上传到服务器
  • 前端:base64的作用
  • Django在fitler过滤不等于的条件
  • Spring Boot英语知识分享网站:技术与实践
  • 京准电钟:NTP网络校时服务器从入门到精准
  • C++趣味编程玩转物联网:用树莓派Pico控制四位数码管
  • DRM(数字权限管理技术)防截屏录屏----视频转hls流加密、web解密播放
  • 实验三 z变换及离散时间LTI系统的z域分析
  • Python中的DrissionPage详解
  • python除了熟悉的pandas,openpyxl库也很方便的支持编辑Excel表
  • go语言怎么实现bash cmd里的mv功能?
  • Vue前端面试进阶(五)
  • 面试手撕题积累
  • notepad++文件github下载
  • .NET新知识点笔记
  • 数据结构:链表进阶
  • Python 爬虫入门教程:从零构建你的第一个网络爬虫