工厂设计模式

工厂设计模式

time:2026_1_20

虚函数

virtual
即使通过基类的指针或引用调用该函数,实际调用的函数是派生类中重写的版本
override
如果派生类在虚函数声明时使用了override描述符,那么该函数必须重载其基类中的同名函数,否则代码将无法通过编译
virtual 定义了父类中的子类需要重载的函数,override 则是确保子类在继承父类的时候必须进行重载,以防后续错误

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
struct pet{
virtual void speak() = 0;
};
struct cat::pet{
void speak() override{
print("miao");
}
};
struct dog::pet{
void speak() override{
print("wano");
}
};
void feed(Pet *pet) {
puts("喂食");
pet->speak();
puts("喂食完毕");
}
int main(){
pet *cat = new cat();
pet *dog = new dog();
freed(cat);
freed(dog);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
sturct Reduce(){
virtual int init() = 0;
virtual int add(int a,int b) = 0;
};

struct add_our :: Reduce(){
int init() override{
return 0;
}
int add(int a ,int b) override{
return a+b;
}
};
struct chen_our :: Reduce(){
int init() override{
return 1;
}
int add(int a,int b) override{
return a*b;
}
};

int reduce(std::vector<int> v,Reduce & reducer){
int x =reducer->int();
for(int i = 0;i<v.size();i++ ){
x = reducer->add(x, v[i]);
}
return x
}

工厂模式

享元模式

享元模式:共享多个对象之间相同的部分,节省内存开销
共享同智能指标share_ptr实现多个对象指向同个资源在减少资源开销的同时,也通过rall特性完成智能内存管理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
struct Sprite{
vector<char> texture;
void draw(glm::vec3 posoition){
glDrawPixels(posoition, texture);
}
};
struct Bullet{
glm::vec3 posoition;
glm::vec3 velocity;
shared_ptr<Sprite> sprite;

void draw(){
sprite->draw(position, velocity);
}
}

代理模式