【发布时间】:2016-09-22 13:17:02
【问题描述】:
我有一个代码库,它最初是用许多不同的选项创建的,这些选项允许您让代码以稍微不同的方式执行相同的过程,如下所示:
public class MainFunction {
public void main(String option){
if (option.equals("vanilla mode")){
this.firstFunction();
}else{
this.differentVersionOfFirstFunction();
}
this.secondFunction();
}
public void firstFunction(){
//First functions code
}
public void secondFunction(){
//Second functions code
}
public void differentVersionOfFirstFunction(){
// different code from First functions code that produces the same type of end result using a slightly different method
}
}
随着各种不同选项的添加和代码变得越来越复杂,这变得越来越复杂。
为了解决这个问题,我最初计划创建一个 Parent 对象,然后可以在需要时让孩子们在他们的 Parent 方法上有细微的不同变化。问题是我知道这会违反 Liskov 替换原则,实际上我可能有孩子应该共享他们父母可能不存在的相同方法。
所以我只能在同一个类对象中使用不同的方法,以稍微不同的方式完成相同的工作。
public class MainFunction {
public void main1(){
this.firstFunction();
this.secondFunction();
}
public void main2(){
this.differentVersionOfFirstFunction();
this.secondFunction();
}
public void firstFunction(){
//First functions code
}
public void secondFunction(){
//Second functions code
}
public void differentVersionOfFirstFunction(){
// different code from First functions code that produces the same type of end result using a slightly different method
}
}
我想我可以创建一个单独的实用程序类来保存我所有的各种功能,但我不确定是否有更优雅的解决方案?
【问题讨论】:
标签: java oop solid-principles liskov-substitution-principle