面向对象的编程:getter / setter或逻辑名
我目前正在考虑要编写的类的接口。此类包含字符的样式,例如,字符是否为粗体,斜体,带下划线等。我已经辩论了两天,是否应该将getter / setter或逻辑名用于将值更改为这些样式。尽管我倾向于使用逻辑名称,但这确实意味着编写的代码效率不高,逻辑也不如逻辑。让我举一个例子。 我有一类CharacterStyles具有成员变量bold,italic,underline(和其他一些人,但我会留下来,以保持它的简单)。允许程序其他部分访问这些变量的最简单方法是编写getter / setter方法,以便您可以执行styles.setBold(true)和styles.setItalic(false)。 但是我不喜欢这样。不仅是因为很多人说吸气剂/装料剂破坏了封装(真的那么糟糕吗?),而且主要是因为它对我而言似乎不合逻辑。我希望通过一种方法styles.format("bold", true)或类似方法来设置角色的样式,但不能通过所有这些方法来设置样式。 不过有一个问题。由于您无法通过C ++中的字符串内容访问对象成员变量,因此我要么必须为所有样式编写一个大的if语句/开关容器,要么必须将样式存储在关联数组中(地图)。 我不知道什么是最好的方法。我想我应该写吸气剂/设定器,下一刻我倾向于另一种方式。我的问题是:你会怎么做?为什么要这么做?