[成功的花朵,人们现在只能欣赏她的璀璨和美丽!起初,她的芽被浸泡在斗争的眼泪中,并散落在牺牲之雨中。 】-Bingxin原型模式也是一种创建模式,用于创建重复的对象,它提供了创建同一对象的最佳方法。
当直接创建对象需要很高的价格时,可以使用原型模式。例如,在创建对象之前,对象需要读取文件或向服务器发起请求以获取一些必要的数据。
每次直接创建显然很昂贵,因此您可以考虑缓存数据并提供一个克隆接口来直接从缓存的数据创建对象。 。
原型模式的实现相对简单,基类提供Clone虚拟函数,而子类仅需要实现Clone函数。 #include& lt; iostream& gt; struct Animal {virtual〜Animal(){} virtual Animal * Clone()= 0;虚拟虚空ShowName()= 0; }; struct Tiger:public Animal {Animal * Clone()覆盖{return new Tiger();} void ShowName()覆盖{std :: cout& lt; “老虎” & lt;& lt; std :: endl;}}; int main(){Animal * animal = new Tiger();动物-& gt; ShowName(); Animal * animal_copy = animal-& gt; Clone(); //我想要一个与动物animal_copy-& gt; ShowName();完全相同的实例return 0;}原型模式还有另一个重要含义:当基类指针指向子类对象时,此时很难复制该子类对象,因为仅通过基类指针,我们不知道什么指针指向的对象的类型,即我们不能调用相应的对象。
将开关添加到typeid的构造函数中似乎太昂贵,因此可以使用此原型模式。参考资料https://www.runoob.com/design-pattern/prototype-pattern.html http https://www.zhihu.com/question/52610176先前推荐。