java – 如何避免使用getter并避免对UI进行硬编码?
我想在控制台上打印一个战士的描述,其中包括战士的力量和战士的武器,形式为< description>战士使用<武器>例如:这个强大的战士使用黄油刀.
为清晰起见进行编辑:我想通过使用getter或任何其他显示对象内部实现的方法(如toString)来查询数据对象而不执行此操作.我还想在不将当前UI(控制台)硬编码到对象本身的情况下执行此操作. public class Warrior { private String description; private Weapon weapon; public Room(String description,Weapon weapon) { this.description = description; this.weapon = weapon } } public class Weapon { private String name; public Weapon(String name) { this.name = name; } } 避免吸气 我可以通过对UI进行硬编码来避免使用getter: //Warrior class public void display() { String.out.println("This " + description + " warrior uses a "); weapon.display(); } //Weapon class public void display() { String.out.print(name); } 避免硬编码的UI 我可以通过使用getter来避免使用硬编码的UI: //Warrior class public String getDescription() { return "This " + description + " warrior uses a " + weapon.getName(); } //Weapon class public String getName() { return name; } 有可能避免两者吗?我怎么能在上面的例子中这样做? 注意:响应一些初始答案,getter不是遵循命名约定getSomeFieldName的方法.因此,将getSomeFieldName重命名为aMethodThatIsNotPrefixedByGet不是解决方案. getter是一种将私有数据从对象传递到调用它的作用域的方法. 要完全清楚,我在这里要解决的问题是数据封装(因为这个问题被标记).如何防止将数据传递给不需要知道该数据但仍然难以对UI进行硬编码的对象? 另外,基于on these questions,我认为toString不应该以许多答案所建议的方式使用. toString似乎用于生成用于调试的对象的文本表示等,而不是用于返回任意输出,尤其不用于返回依赖于应用程序的输出. 解决方法
是的,去
i18n,
messages.properties displayMessage = This {0} warrior uses a {1} messages.properties_en_US displayMessage = This {0} warrior uses a {1} 和 public static String getString(String key,Object... params ) { try { return MessageFormat.format(RESOURCE_BUNDLE.getString(key),params); } catch (MissingResourceException e) { return '!' + key + '!'; } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |