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。(重用性非常好)

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

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值