我怎样才能为将来类的潜在数据做好准备?

时间:2010-12-31 10:59:03

标签: java

我有一个班级(例如Customer
其中包含字段name和方法getName() 在这一刻,他们只有英文名称
但是,如果有任何新语言可用,我必须做好准备(例如法语名称

似乎我应该使用Decorator模式
但它没有使用该模式来“增加更多的责任”。

我应该只添加一个哈希表还是有更好的解决方案?

4 个答案:

答案 0 :(得分:1)

如果它们有多个名称,那么HashMap将是一个合理的解决方案

public String getName(String lang) {
   return names.get(lang)
}

(错误检查已删除)

如果您的客户有多个名称表示,那么其他实体也可能,并且您应该提取要在整个系统中使用的功能。

答案 1 :(得分:0)

不管语言如何,人们都不会拥有相同的名称吗?有时,不同语言的用户对口语的名称不同,并且在不同的脚本中以不同的方式编写。

如果你真的想要这种复杂性,你需要四个概念:客户名称代词书面表达。客户HAS-A名称。名称是HAS-AN-ASSOCIATED本地代词,也许是HAS-ASSOCIATED替代发音。发音可能是使用国际音标(IPA)的文本表示。书面表示只是一个字符串。

这足以指出你正确的方向吗?

答案 2 :(得分:0)

我同意Brian 如果客户有多个名字。

如果您有英语,法语和德语客户,可能有地址(格式因国家/地区而异),您也可以使用界面:

interface Address {
    void setStreet(String street);
    void setPostalCode(String code); 
}

interface Customer {
    void setName(String name);
    void setAddress(Address address);
}

public class EnglishAddress implements Address {
    public void setPostalCode(String postalCode) {
       // custom checking of the typical English zipcode format
    }
    ...
}

public class FrenchAddress implements Address {
    public void setPostalCode(String postalCode) {
       // custom checking of the typical French zipcode format
    }
}

public class EnglishCustomer implements Customer {
    ...
}

在这种情况下,您可以在Address和Customer上构建业务逻辑,并根据用户输入创建正确的类。可能通过使用Factory类,虽然这完全是可选的。

使用这种方法,您可以获得特定国家/地区的验证和元信息,而不会牺牲在客户和地址上运行的相当通用的业务逻辑的功能。

答案 3 :(得分:0)

我想知道它是否是同一个名字,但在不同的语言环境中显示不同?这是俄罗斯客户的屏幕将使用不同的字符集然后是美国人,所以显示美国人的名字将使用不同的字符。这是你面临的问题吗?