用OO aproach替换if else

0 java oop if-statement

让我们说:

if (count <= instance.getFCount()) {
    //do something and return String
} else if (count <= instance.getFSCount()) {
    //do something and return String
} else if (count <= instance.getTCount()) {
    //do something and return String
} else if (count <= instance.getOCount()) {
    //do something and return String
}
Run Code Online (Sandbox Code Playgroud)

我在想如何将这些代码替换为更面向对象的代码.问题是,如果我有这样的声明:

if (count <= 0) {
    //do something and return String
} else if (count <= 1) {
    //do something and return String
} else if (count <= 2) {
    //do something and return String
} else if (count <= 3) {
    //do something and return String
}
Run Code Online (Sandbox Code Playgroud)

我可以用一些工厂模式或基于枚举的方法替换它,因为我的值0,1,2,3将始终是静态的.例如,我会创建一个映射来保持类对数字,然后如果我的计数为0我会知道我需要从类中创建一个映射为零的实例,依此类推.

但是现在我在想如果我在if条件中没有静态值,有什么办法可以做,因为例如返回的内容:instance.getOCount()根据配置的不同可能会有所不同.

你能给我一些想法如何实现这个目标吗?

chr*_*her 11

当您有许多不同的if else陈述时,您可以使用策略模式.这有助于您创建符合最佳实践的可管理代码.


Ósc*_*pez 5

我相信没有必要用设计模式替换这么简单的逻辑,这是不合理的.A switch将是一个改进(假设count是一个整数),但为什么要创建一堆类?只有每个人都有其他不同的行为才有理由.