好的代碼 更多的也是爲了後期維護,哪怕後期不須要你來維護 ,清晰乾爽的代碼也會爲做者留下好的印象java
而且 在工做團隊中 能夠施加影響力bash
小學一年級有 語文 數學 英語老師上課, 目前課程表還沒出來 須要將上課功能實現ide
程序語言 Java語言ui
該方法提供了三位老師的教學任務,
實際業務場景會比這個複雜的多
------------------------------------------------------------
這樣的寫法有點體現不出做者的水平,
當業務塊多時 一個方法太大,有些偏激(裝B)的工程師成之爲 一坨
用多態的方式寫 可讀性好 代碼水平高(我的認爲)~~
public void teach(String course){
if("Chinese".equals(course)){
Teacher teacher=new Teacher(.....);
teacher.teach("我愛北京天安門");
}
if("Math".equals(course)){
Teacher teacher=new Teacher(.....);
teacher.teach("5+2+1=?");
}
if("English".equals(course)){
Teacher teacher=new Teacher(.....);
teacher.teach("what is your name?");
}
}
複製代碼
教師類接口 將用於實際教學過程當中的控制教什麼內容
public Interface Teacher{
public void teach();
}
語文教師 實現接口
public class ChineseTeacher implements Teacher{
public void teach(){
System.out.printf("鄙人教語文 我愛北京天安門");
}
}
數學教師 實現接口
public class MathTeacher implements Teacher{
public void teach(){
System.out.printf("鄙人教數學 萬物皆數 1+1=?");
}
}
英文教師 實現接口
public class EnglishTeacher implements Teacher{
public void teach(){
System.out.printf("鄙人教英文 擅長法語 what is your name?");
}
}
複製代碼
定義教師類枚舉 以多態的形式
public enum TeacherEnum{
CHINESE_TEACHER{
@Override
public Teacher init() {
return new ChineseTeacher ();
}
},
MATH_TEACHER{
@Override
public Teacher init() {
return new MathTeacher ();
}
},
ENGLISH_TEACHER{
@Override
public Teacher init() {
return new EnglishTeacher ();
}
};
public abstract Teacher init();
}
複製代碼
public void teach(String course){
assert(course);
TeacherEnum teacherEnum= TeacherEnum.valueof(course);
teacherEnum.init().teach();
}
複製代碼
- 將路由規則任務 以多態的形式表達出來 肯定執行者 排除掉 if else switch
- 將業務功能拆分 以多態的形式表達出來 執行者各司其職 主流程負責調度 業務模塊執行業務