Coding style 封装设计

Coding style 封装设计,coding-style,encapsulation,Coding Style,Encapsulation,我有一个Office业务对象,它有一个officeId实例 从业务角度来看,office ID可以有500个不同的值 officeId=1表示它位于洛杉矶 officeId=2表示它位于SFO中,以此类推 我想查一下办公室是给洛杉矶还是SFO的 我可以使用ISOFICEINLOSANGELES、ISOFICEINSFO等方法 我可以将此视为在Office中封装数据和行为的一种方式 但我担心的是,我必须添加500个is*方法才能找到office 有没有办法从某处提取这些Is*方法来简化设计并保持封

我有一个Office业务对象,它有一个officeId实例

从业务角度来看,office ID可以有500个不同的值

officeId=1表示它位于洛杉矶 officeId=2表示它位于SFO中,以此类推

我想查一下办公室是给洛杉矶还是SFO的

我可以使用ISOFICEINLOSANGELES、ISOFICEINSFO等方法

我可以将此视为在Office中封装数据和行为的一种方式

但我担心的是,我必须添加500个is*方法才能找到office


有没有办法从某处提取这些Is*方法来简化设计并保持封装?

设计一个包含500个值的枚举,每个城市一个。然后,提供一个
getCity
方法,将城市作为枚举值之一返回。然后您的(Java语言)检查变为

City c = office.getCity();
if (c == City.LA) {
    // Do something
} else if (c == City.SFO) {
    // Do something
}

封装是正确的。。。这样想,在代码中,“1表示LA,2表示SFO…”的“知识”应该封装在哪里?如果您的office对象是唯一需要知道ID含义的对象,那么您可以公开一个方法
getOfficeLocation
,该方法返回一个有用的表示形式,例如
String
,调用
office
对象的人可以使用,因为知道接口不会更改,即使将新位置添加到较新版本的
Office
对象中