设计模式(二二)-- 责任链模式

2018-12-05  本文已影响0人  信仰年輕

源代码
GitHub源代码

1.本文目标

本文目标是为了让大家认识并理解责任链模式

2.基本套路

定义:为请求创建一个接受此次请求对象的链
类型:行为型
选择关键点:对于每一次请求是否每个处理的对象都需要一次处理机会
设计原则:遵循迪米特
使用概率:15%
难度系数:中

3.适用场景

1.一个请求的处理需要多个对象当中的一个或几个协作处理

4.使用步骤

用栗子能更好的说明问题,请继续往下看

5.举个栗子

我们用具体的代码去更好的理解这个设计模式

5.1栗子说明

5.2使用步骤

实现代码如下:

步骤1.创建课程类

public class Course {
    private String name;
    private String article;
    private String video;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getArticle() {
        return article;
    }

    public void setArticle(String article) {
        this.article = article;
    }

    public String getVideo() {
        return video;
    }

    public void setVideo(String video) {
        this.video = video;
    }

    @Override
    public String toString() {
        return "Course{" +
                "name='" + name + '\'' +
                ", article='" + article + '\'' +
                ", video='" + video + '\'' +
                '}';
    }
}

步骤2.创建抽象的批准者类

public abstract class Approver {
    protected Approver approver;

    public void setNextApprover(Approver approver){
        this.approver = approver;
    }
    public abstract void deploy(Course course);
}

步骤3. 创建手记批准者和视频批准者

public class ArticleApprover extends Approver {
    @Override
    public void deploy(Course course) {
        if (StringUtils.isNotEmpty(course.getArticle())) {
            System.out.println(course.getName() + "含有手记,批准");
            if (approver != null) {
                approver.deploy(course);
            }
        } else {
            System.out.println(course.getName() + "不含有手记,不批准,流程结束");
            return;
        }
    }
}

public class VideoApprover extends Approver {
    @Override
    public void deploy(Course course) {

        if (StringUtils.isNotEmpty(course.getVideo())) {
            System.out.println(course.getName() + "含有视频,批准");
            if (approver != null) {
                approver.deploy(course);
            }
        } else {
            System.out.println(course.getName() + "不含有视频,不批准,流程结束");
            return;
        }
    }
}

步骤4. 测试

 public static void main(String[] args) {
        //创建手记批准者
        Approver articleApprover = new ArticleApprover();
        //创建视频批准者
        Approver videoApprover = new VideoApprover();

        //创建课程
        Course course = new Course();
        course.setName("Java设计模式精讲");
        course.setArticle("Java设计模式精讲的手记");
        course.setVideo("Java设计模式精讲的视频");

        //校验
        articleApprover.setNextApprover(videoApprover);
        articleApprover.deploy(course);
 }

6.优点

7.缺点

8.总结

本文只是对责任链模式进行一个分享,接下来会从创建型模式,结构型模式,行为型模式,这三大类展开一个系列分享,大家可以持续进行关注,信仰年輕的设计模式,蟹蟹啦。

上一篇 下一篇

猜你喜欢

热点阅读