• ServiceLoad 应用(链式编程:统一执行某一类功能、、分支语句优化)


    周计划安排;“工作日(周一到周五):去工作;周六:锻炼身体;周日:休息;”

    若用代码完成上述内容该怎么做?

    这样吗?很显然是可以实现。

    但是这样不是个好的实现方式。。。。。。(没有什么扩展性,如果需求调整就得修改调用方法)

    接下来介绍另外一种实现方式:


    /**
    * 周计划 接口
    */
    public interface WeeksPlan {
    /**
    * 获取哪一天
    *
    * @return
    */
    Day getDay();

    void doTing();

    public enum Day {
    WORK,//工作日
    STA,//周六
    SUN//周日
    }
    }
    /**
    * 工作日.
    */
    public class WorkingDays implements WeeksPlan {
    @Override
    public Day getDay() {
    //工作日
    return Day.WORK;
    }

    @Override
    public void doTing() {
    System.out.println("上班 ing。。。。");
    }
    }

    /**
    * 周六 健身
    */
    public class Saturday implements WeeksPlan {

    @Override
    public Day getDay() {
    //周六
    return Day.STA;
    }

    @Override
    public void doTing() {
    System.out.println("健身 。。。");
    }
    }
    /**
    * 周日休息
    */
    public class Sunday implements WeeksPlan {

    @Override
    public Day getDay() {
    //周日
    return Day.SUN;
    }

    @Override
    public void doTing() {
    System.out.println("休息 。。。");
    }
    }

    增加配置文件:

    客户端调用:

    import java.util.ServiceLoader;

    /**
    * 执行计划
    */
    public class ExecutePlan {

    public static void main(String[] args) {
    exe();
    }

    private static void exe() {
    //周计划
    ServiceLoader<WeeksPlan> weeksPlans = ServiceLoader.load(WeeksPlan.class);
    for (WeeksPlan plan : weeksPlans) {
    System.out.print(plan.getDay() + ":");
    plan.doTing();
    }
    }
    }
    结果:


    总结:
    1,计划功能类结构清晰;如果需要细化到每一天的计划,只需要增加几个类即可;
    2,易于调整;若计划改变,周日"休息"调整为“聚餐” 仅仅需要调整对应的功能实现类即可,不用修改调用方;
    
    
  • 相关阅读:
    Linux查看文件被哪个进程占用
    命令行启动rstudio server
    Spring Boot配置文件及多环境配置
    Spring Boot yml配置文件
    js实现自定义概率抽奖算法
    Flutter之adb: failed to install apk的解决方法
    Flutter之不简单的搜索条
    git操作之commit规范
    Flutter之毛玻璃效果的实现
    固定定位下div水平居中
  • 原文地址:https://www.cnblogs.com/fish-in-sky/p/6389496.html
Copyright © 2020-2023  润新知