【发布时间】:2021-05-14 16:42:54
【问题描述】:
我正在尝试学习设计模式规范(如重构大师),但我有一些问题要理解如何将糟糕设计的想法与需要“脱离构造函数”的公共 getter/setter 和工厂/生成器合并" 变量设置器。
以本文回复article to Design pattern为例
正如你所理解的,每个对象都需要很多信息,添加部分应该设置所需的信息,但要做到这一点,它需要在构造函数之外访问我的变量。
帮我弄清楚我错过了什么。
--- 编辑 更准确地说,假设我有 2 个类: CombatObject
在这种情况下,getter/setter 不是一个糟糕的设计(或者是吗?)
【问题讨论】:
-
工厂用于根据标准生成不同种类的子类。 getter/setter 用于更改对象数据成员的状态。恕我直言,一个不能替代另一个。
-
你也可以实现克隆模式。工厂将生成一艘船。 Ship 的 clone 方法可以创建重复的船;那么你就可以改变那些克隆了。
-
在我看来,getter 和 setter 通常是个坏主意。更喜欢有对对象做事的方法,而不是从对象中获取数据,操作它,然后设置结果。如果你有一个
public设置器,它只设置成员的值,你已经有效地创建了成员public。一个好的 setter 会做一些事情,比如通过测试和拒绝无效值来保护类。 -
@user4581301:拥有一个简单的公共 getter/setter 比将成员公开有一个优势。如果我今天在我的课堂上安装了 getter 和 setter,而其他人开始编写使用它们的代码,我可以在明天修改它们——以及成员本身——。如果我今天让每个人都可以公开访问会员本身,我会很高兴收回它。
-
是的,你也可以在上面挂断点。我应该把这个评论措辞更好一点。
标签: c++ design-patterns getter-setter