package com.lonton.designpatterns;
abstract class Chain
{
public static int ONE = 1;
public static int TWO = 2;
public static int THREE = 3;
protected int threshold;
protected Chain next;
public void setNext(Chain chain)
{
next = chain;
}
public void message(String msg, int priority)
{
if (priority <= threshold)
{
writeMessage(msg);
}
if (next != null)
{
next.message(msg, priority);
}
}
abstract protected void writeMessage(String msg);
}
class AA extends Chain
{
public AA(int threshold)
{
this.threshold = threshold;
}
@Override
protected void writeMessage(String msg)
{
// TODO Auto-generated method stub
System.out.println("A: " + msg);
}
}
class B extends Chain
{
public B(int threshold)
{
this.threshold = threshold;
}
@Override
protected void writeMessage(String msg)
{
// TODO Auto-generated method stub
System.out.println("B: " + msg);
}
}
class C extends Chain
{
public C(int threshold)
{
this.threshold = threshold;
}
@Override
protected void writeMessage(String msg)
{
// TODO Auto-generated method stub
System.out.println("C: " + msg);
}
}
public class ChainOfResponsibilityTest
{
private static Chain createChain()
{
Chain chain1 = new AA(Chain.THREE);
Chain chain2 = new B(Chain.TWO);
chain1.setNext(chain2);
Chain chain3 = new C(Chain.ONE);
chain2.setNext(chain3);
return chain1;
}
public static void main(String[] args)
{
Chain chain = createChain();
chain.message("Level 3", Chain.THREE);
chain.message("Level 2", Chain.TWO);
chain.message("Level 1", Chain.ONE);
}
}
Chain of Responsibility 责任链模式
最新推荐文章于 2022-05-12 13:16:00 发布