`
donald3003a
  • 浏览: 64399 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论
  • 淼淼E馒头: 这举列有点不恰当啊。。电影人和不同类型的电影。是两个不同概念 ...
    合成模式

职责链模式

阅读更多
职责链模式
很形象的一个模式,就好比请假一样,如果自己不能审批就要交给上级。所以这个行为模式很好理解
实现如下:
1、责任链抽象类
public abstract class Handler {

	protected Handler handler;

	public void setSuccessor(Handler handler) {
		this.handler = handler;
	}

	public abstract void handleRequest(int day);

}


2、第1级
public class Leader extends Handler {

	@Override
	public void handleRequest(int day) {
		if (day <= 3) {
			System.out.println("Leader hanlde");
		} else {
			handler.handleRequest(day);
		}

	}

}

3、第2级
public class Manager extends Handler {
	@Override
	public void handleRequest(int day) {
		if (day <= 7) {
			System.out.println("Manager hanlde");
		} else {
			handler.handleRequest(day);
		}

	}
}


4、第3级
public class Ceo extends Handler {

	@Override
	public void handleRequest(int day) {
		if (day <= 14) {
			System.out.println("Ceo hanlde");
		} else {
			System.out.println("no hanlde");
		}

	}
}



5、调用类
public class Main {
	public static void main(String[] args) {

		Handler leaderHandler = new Leader();
		Handler managerHandler = new Manager();
		Handler ceoHandler = new Ceo();

		leaderHandler.setSuccessor(managerHandler);
		managerHandler.setSuccessor(ceoHandler);

		int[] request = { 2, 5, 14, 15 };
		for (int i : request) {
			leaderHandler.handleRequest(i);
		}

	}
}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics