在此C ++视频中,该工厂类的意义是什么?

时间:2018-09-22 12:15:37

标签: c++

see this image

DogFactory类的意义是什么?它所做的只是实现静态功能来创建特定类型的狗,但为什么不自己写它呢?

例如,代替

Dog* ptr = DogFactory::createYellowDog();

为什么不

Dog* ptr = new YellowDog();

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

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

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

但是无论哪种方式,仍然比使用DogFactory更好。

1 个答案:

答案 0 :(得分:1)

典型的情况是Dog是公共图书馆接口的一部分,而YellowDog是图书馆提供的私有实现的一部分。用户代码不知道库选择的特定实现,仅使用公共接口Dog和公共工厂函数来产生实例。库中YellowDog的这种实现方式可以修改,而无需更改用户代码。