这个工厂类在这个C++视频中的意义何在?

What is the point of this factory class in this C++ video?

本文关键字:视频 工厂 C++      更新时间:2023-10-16

见此图

狗工厂类的意义何在?它所做的只是实现静态函数来创建特定类型的狗,但为什么不自己编写呢?

例如,而不是

Dog* ptr = DogFactory::createYellowDog();

为什么不呢

Dog* ptr = new YellowDog();

它更清晰,更短,更容易。

当然,在实践中你会做类似的事情

std::unique_ptr<Dog> ptr = std::make_unique(YellowDog());

但无论哪种方式,仍然比使用DogFactory要好得多。

典型的情况是Dog是公共库接口的一部分,而YellowDog是库提供的私有实现之一。用户代码不知道库选择的特定实现,只使用公共接口Dog和公共工厂函数来生成实例。通过这种方式,可以在不需要对用户代码进行任何更改的情况下修改库内部YellowDog的实现。