![](https://img.haomeiwen.com/i12927865/80bd1c33df3497e3.jpg)
扯淡
好的代码 更多的也是为了后期维护,哪怕后期不需要你来维护 ,清晰干爽的代码也会为作者留下好的印象
并且 在工作团队中 可以施加影响力
用多态 消灭 if else switch
业务场景
小学一年级有 语文 数学 英语老师上课, 目前课程表还没出来 需要将上课功能实现
程序语言 Java语言
代码实现 之 瀑布流
该方法提供了三位老师的教学任务,
实际业务场景会比这个复杂的多
------------------------------------------------------------
这样的写法有点体现不出作者的水平,
当业务块多时 一个方法太大,有些偏激(装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
- 将业务功能拆分 以多态的形式表达出来 执行者各司其职 主流程负责调度 业务模块执行业务
网友评论