该方法提供了三位老师的教学任务, 实际业务场景会比这个复杂的多 ------------------------------------------------------------ 这样的写法有点体现不出作者的水平, 当业务块多时 一个方法太大,有些偏激(装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
  • 将业务功能拆分 以多态的形式表达出来 执行者各司其职 主流程负责调度 业务模块执行业务
  • 分类:
    后端
    标签: