我有一个Office业务对象,它有一个officeId实例。
从业务角度来看,办公室ID可以有500个不同的值。
officeId = 1表示它位于洛杉矶 officeId = 2表示它位于SFO等等
我想检查办公室是用于LA还是SFO
我可以使用isOfficeInLosAngeles,isOfficeInSfo等方法
我可以将此视为在Office中封装数据和行为的一种方式。
但我担心的是,我必须添加500个*方法才能找到办公室。
有没有办法在某处提取这些*方法来简化设计并仍然保持封装?
答案 0 :(得分:1)
设计一个包含500个值的枚举,每个城市一个。然后,提供一个getCity
方法,将城市作为枚举值之一返回。然后你的(Java语言)检查变为
City c = office.getCity();
if (c == City.LA) {
// Do something
} else if (c == City.SFO) {
// Do something
}
答案 1 :(得分:0)
封装是正确的......以这种方式思考,在你的代码中应该将“1意味着LA,2意味着SFO ......”的“知识”封装起来?如果您的office对象是唯一需要知道ID含义的对象,那么您可以公开一个方法getOfficeLocation
,它返回一个有用的表示,比如String
,Office
的调用者即使您将新位置添加到Office
对象的更高版本,对象也可以使用,知道接口不会更改。