- 博客(8)
- 收藏
- 关注
原创 设计模式三、模板方法模式
模板方法模式的定义如下:定义一个算法的框架,而将一些步骤延迟到子类中。使得子类在不改变算法结构情况下,就可以重新定义该算法的某些特定步骤。#include <iostream>class CarModel{public: //定义存在的基本方法 virtual void start() = 0; virtual void stop() = 0; virtual void alarm() = 0; //定义模板方法 void run
2021-12-21 20:34:35
126
原创 设计模式二、简单工厂,工厂方法和抽象工厂模式
1、简单工厂模式简单工厂模式的特点是只有一个工厂,根据输入的条件不同,实例化不同的类。#include <iostream>class AbstractProduct{public: virtual void doSomething() = 0;};class ProductA : public AbstractProduct{public: virtual void doSomething(){ std::cout << "P
2021-09-30 16:35:50
64
原创 设计模式一、单例模式
单例模式简单来说对于一个类,只有一个实例。优点:只有一个实例,减少了内存的开支;不需要频繁的创建销毁实例,减少了系统消耗;优化了对资源的访问和共享,例如,写一个文件,避免的同时写的问题等。缺点:不利于扩展;可能内部逻辑和职责比较复杂,与单一职责原则有冲突。使用场景:可以用于生成全局唯一id;提供共享访问数据;如果类占用的系统资源多时,由于只有一个实例,可以节省系统资源等。注意事项:单例模式在并发场景下,需要考虑线程安全问题。推荐实现方式:(局部静态变量模式)#include &
2021-09-24 17:11:52
77
原创 6大设计原则小结
目录1.单一职责原则2.里氏替换原则3.依赖倒置原则4.接口隔离原则5.迪米特法则(最少知识原则)6.开闭原则1.单一职责原则一个类有且仅有一个职责(但是职责的定义很广泛,可以根据实际进行细分)。比如,我们需要维护我们的用户信息,则可以分为2个职责:用户信息的存储;用户信息的修改删除等动作。2.里氏替换原则主要有以下几点要求子类必须完全实现父类的方法 子类可以有自己的个性 覆盖或实现父类方法时,输入参数可以放大——子类中重载的方法,参数必须是父类参数的类型或者
2021-09-23 11:28:41
57
原创 C++虚函数表
C++为每个类对象添加一个隐藏成员,这个成员就是虚函数表指针。虚函数表可以理解成一个表格,里面存放了类中的虚函数指针。我们可以通过虚函数表找到需要调用的虚函数。一、存储虚函数表指针位于类存储的最前面4个字节,编译期生成,运行期载入。假设存在A类,则其存储如下:A的虚函数表指针 A的属性a A的属性b …… 而其中A的虚函数表指针指向的内存存储如下:虚函数A::func1地址 虚函数A::func2地址 虚函数A::func3地址 虚函数A::func4地址
2021-09-13 20:18:22
153
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人