通过工厂设计模式从客户端隐藏新的优势是什么?

NDe*_*iny 6 c++ design-patterns factory-pattern

我最近看过工厂设计模式,因为他提到了正常方法中的一个问题

*需要在客户端类中使用new关键字.

因此,通过使用工厂,我们已经实现了这一点(客户端不使用新的).但是从客户端隐藏新东西有什么好处?

一个问题是当客户端使用新的关键字时,他负责删除该内存.如果我们也使用工厂,我们仍然需要这样做,当客户端在最后创建一个对象时,客户端必须删除它(工厂不会删除它们).

我理解,其他优点,如重用现有代码,无需更改客户端代码.但是我对从客户端隐藏新(甚至是类)所取得的成果感到困惑.

提前致谢.

rav*_*avi 2

工厂模式并不是为了向客户端隐藏 new 的使用。是的,您必须对工厂内 new 产生的对象调用 delete 。

工厂模式的主要优点是它将对象创建本地化在一处。因此,层次结构中的任何更改都只能影响这部分代码,这只是一般规则的特殊化,即软件中的任何更改都应影响代码的最小部分。