我试图重构代码,发现了这段代码。
您能否建议其中的任何重构,并请说出您使用的折射。
private void setUpBag(String language){
if(language.equals("english")){
/* add letters with English distribution to bag */
}
else if(language.equals("french")){
/* add letters with French distribution to bag */
}
else if(language.equals("russian")){
/* add letters with Russian distribution to bag */
}
else{
throw new IllegalArgumentException("Unknown language");
}
}
您实际上违反了 SRP(单一职责原则),因此每当添加新语言时您都需要接触此代码库。
为了避免大量的列表if else statements
,您需要一个松散耦合的设计,其中addLetters
() 行为应该单独实现LanguageImpl
类(如英语等),如下面的代码所示,它使用状态模式:
步骤(1):定义Language
界面
public interface Language {
addLetters();
}
步骤(2):定义Language
实施
public English implements Language {
//implement addLetters() for English
}
//Implement other Language Classes as well in separate classes
步骤(3):修改setUpBag
方法采用Language
object
public void setUpBag(Language language){
language.addLetters();
}
Each Language
此处的类遵循 SRP,这是设计 OOP 应用程序的关键,即每个语言类仅处理特定的行为。
你可以看here https://en.wikipedia.org/wiki/Single_responsibility_principle更多细节。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)