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