【发布时间】:2016-01-28 18:02:23
【问题描述】:
我目前正在开发具有许多不同设计模式的应用程序。它需要遵循良好的实践,基本上没有代码异味。
我正在使用工厂方法打印出随机类型的对象,但我必须使用 3 个 if 语句,这似乎效率低下……如果我想打印出 10 个不同的对象会怎样?如果没有其他方法可以解决此问题,是否只需要添加更多语句。
** 这个特定方法在工厂中的最终用途是只返回一个球类型的随机对象 (1)。
RandomGenerator ranGen = new RandomGenerator();
int randomNumber = ranGen.createRandomNumber(1,3);
if(randomNumber == 1){
//return smallBall
}
else if(randomNumber ==2){
//return mediumBall
}
else if(randomNumber == 3){
//return largeBall
}
【问题讨论】:
-
一个开关也要重复几次?
-
您还可以创建一个包含不同球的数组并使用随机数作为索引。
-
你的 Ball 是什么类型的数据?
-
基于数组/映射的解决方案假定返回单个实例是可以的;例如,如果您正在生成一个充满随机球的房间,那么您可能每次都需要一个 new 实例,这需要对目前所呈现的内容进行修改。由于我们不知道这家工厂的最终用途,因此很难提供具体的答案。
-
是多个唯一实例,每个对象具有多个不同的属性,
标签: java c++ refactoring factory