12 - 13 虚函数、多态-template method-observer-composite-Prototype设计模式
1 虚函数和多态
函数前加virtual关键字,就变成虚函数了
数据可以被继承,函数的继承是继承了调用权,子类可以调用父类的函数
1)成员函数的分类:
非虚函数:不希望被重新定义
虚函数:希望被重新定义
纯虚函数:一定要重新定义。
关键动作(serialize())延缓到子类去实现出来,1年以后都行。这个是template method:临时函数模式?
serialize是通过this来调用
3种关系功能最强大的是delegation + 继承
2 委托+继承
1)4个放大镜看同一个文件,存储数据和表现数据之前需要具备什么样的关联性?一个文件有变化,其它都得有变化
有4个相同的observer
2)如上右下角的情况:有3个不同的observer
Subject放真正的数据,里面可以有好几个Observer来观察(见图,有个n),
Subject中有指针数组,也是delegation
attach是个注册功能,放入m_views中的Observer都可以进行观察,还得有个相应的注销功能,这里没有
还有一个通知功能notify(),当4个或3个中的其中一个有变化时,通知其它几个也进行相应变化。
3 Composite设计模式
把Primitive想成文件,Composite想成文件夹,Component是它们的父类,它们总体可以形成一个目录树
Primitive的add是空函数,Composite的add可以添加目录和文件。
4 Prototype设计模式
这个先不看了,视频结束
分类:
侯捷C++面向对象高级开发
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义