C++ Evil Getter Setter 反对 Factory/Builder 设计模式

C++ Evil Getter Setter against Factory/Builder design pattern

我正在尝试学习规范设计模式(如重构大师),但我有一些问题无法理解如何将不良设计的想法与 public getter/setter 和 factory/Builder 需要“构造函数外”变量 setter.

例如本文对

的回答

正如你所理解的,每个对象都需要很多信息,添加部分应该设置所需的信息,但是为了能够做到这一点,它需要在构造函数之外访问我的变量。

帮我弄清楚我错过了什么。

--- 编辑 更准确地说,假设我有 2 class : CombatObject <---- 宇宙飞船 我有一家工厂可以制造不同类型的宇宙飞船(主要是因为我不想创造超过 10 个 class 只是为了改变对象的统计数据)

在这种情况下,getter/setter 不是一个糟糕的设计(或者是吗?)

好的,我认为评论是正确的,我看到的解决方案如下:

否 Setter,与对象交互的唯一方法是使用有目的的功能。 例如,修改 HP,添加一个 DoDamage 函数,如果船被摧毁,它将 return false 并将在内部修改 hp(也可能是损坏,等等)

Getter可以是public,当然也只能是"const &"

克隆方法是未来开发的好主意(原型模式)