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

C++设计模式简介

每一个模式都描述了重复的问题,和解决的方案,

所以就可以直接使用模式,而不是造轮子。

抽象思维:把周围的世界抽象成程序代码
如何使用面向对象的机制来表达现实世界,这是最好的。

如何解决复杂性:

  1. 分而治之
  2. 抽象(只处理理想化模型)

Show me the code:

如何分解?(伪代码、画图工具)

  1. 有point rectangle line类‘
  2. 父类有个Form,子类mainForm,取了p1,p2.划线,划矩形需要数据结构,vector。
  3. 有虚函数调用
  4. 鼠标down的时候,实现,鼠标up的时候,实现
  5. 针对直线和矩形如何画?
    在这里插入图片描述

如何抽象?

  1. shape父类有虚函数,虚析构函数。
  2. line继承于shape,重写了draw,画出了自己的line的形状
  3. rectangle也是同理
  4. 各种虚函数,各种继承。

哪种设计更好呢?
引入了客户需求的变化,圆形怎么画?

class Circle{
//点 半径 构造器
}

如果是第一种分而治之的思想,那么还得写个数据结构存circle,之后的实现也得写出来circle。针对圆形,还得具体实现。(半径、圆心等等)(很小的需求,要改的超级多)

如果是第二种做法,一样也得写一个circle类,但是可以继承于shape父类,override一下自己的draw,第二种写法不用改变只有一个数据结构vector存shape。(重用性非常好)

各负其责
在这里插入图片描述


http://www.mrgr.cn/news/1652.html

相关文章:

  • python人工智能002:jupyter基本使用
  • 读高性能MySQL(第4版)笔记01_MySQL架构(上)
  • 石油采集行业应用解决方案
  • 【杂乱笔记】图论
  • 【Unity开发】避免重复加载场景资产AB(AssetBundle)包的优化
  • FPGA实现HDMI传输(一)
  • 我叫:堆排序【JAVA】
  • 掌握PyTorch的加权随机采样:WeightedRandomSampler全解析
  • Android12 呼出电话呼叫中挂断后铃声继续响一下的处理
  • 第132天:内网安全-横向移动Exchange服务有账户CVE漏洞无账户口令爆破
  • SpringCloud之服务提供与调用
  • AXI DMA IP的DRE对性能产生的影响
  • “软件定义汽车”时代,腾讯找到了怎样的身位?
  • 数字化转型底座-盘古信息IMS OS,可支撑构建MES/WMS/QCS/IoT等工业软件
  • UART通信实现与验证(RS485)
  • Python Web 应用和数据处理任务库之Redis Queue (RQ) 使用详解
  • Kafka面试题
  • Yolov10网络详解与实战(附数据集)
  • 【JavaScript】[]和{} 的转换
  • 自助酒店管理系统设计与实现