Back to Posts

设计模式——责任链模式使用枚举实现

Posted in DesignPattern

责任链模式,用于对用一个资源,链式处理的场景,比如Logger的log()方法,Filter的doFilter()方法;

责任链的运用不是很复杂,相对于以注册的方式指定链中的下一个处理对象,这里主要记录一种用枚举实现责任链的方式

package com.git.poan.designparttern;

/**
 * Created by poan on 2018/04/02.
 */
public enum ResponsibilityChain {


    FIRST {
        @Override
        public void dose() {
            System.out.println("我要说,123456789; 然后接下来有请下一位");
        }
    },
    SECOND {
        @Override
        public void dose() {
            System.out.println("我要说 abcdefgh; 然后接下来有请下一位");
        }
    },
    THIRD {
        @Override
        public void dose() {
            System.out.println("我要说 @!#¥%……&*; 然后接下来有请下一位");
        }
    },;

    public void speak() {
        System.out.println("有请:" + this.name());
        dose();
    }

    protected abstract void dose();


    public static void main(String[] args) {
        ResponsibilityChain[] chains = ResponsibilityChain.values();
        for (ResponsibilityChain chain : chains) {
            chain.speak();
        }
    }
}

你看那个人好像一条狗啊

Read Next

享元模式与Integer的valueOf方法