什么意思呢兄淫?
就是有這么一個鏈條,你也不用管它具體怎么鏈的蔓姚,你只需要給它一個輸入捕虽,它就能找到恰當?shù)囊画h(huán)來處理你的輸入,就這么個意思坡脐。很顯然泄私,這對于使用者來說是非常方便的。
類圖
調(diào)用
package com.company;
public class Main {
public static void main(String[] args) {
// write your code here
AbstractReceiver chain = installChain();
chain.chainElementInput(AbstractReceiver.receiver2);
chain.chainElementInput(AbstractReceiver.receiver1);
chain.chainElementInput(AbstractReceiver.receiver3);
}
/**
* 組裝責任鏈
* @return
*/
public static AbstractReceiver installChain() {
AbstractReceiver receiver1 = new Receiver1(AbstractReceiver.receiver1);
AbstractReceiver receiver2 = new Receiver2(AbstractReceiver.receiver2);
AbstractReceiver receiver3 = new Receiver3(AbstractReceiver.receiver3);
receiver1.setNextRecevier(receiver2);
receiver2.setNextRecevier(receiver3);
return receiver1;
}
}
結(jié)果
com.company.Receiver2
com.company.Receiver1
com.company.Receiver3
Process finished with exit code 0
抽象接收者
package com.company;
public abstract class AbstractReceiver {
public static int receiver1 = 1;
public static int receiver2 = 2;
public static int receiver3 = 3;
protected int receiverIndex;
protected AbstractReceiver nextRecevier;
public void setNextRecevier(AbstractReceiver nextRecevier) {
this.nextRecevier = nextRecevier;
}
/**
* 控制恰當鏈中的某一環(huán)來處理备闲。
* @param inputIndex
*/
protected void chainElementInput(int inputIndex) {
if (inputIndex <= this.receiverIndex) {
printInformation(this.receiverIndex);
return;
} else {
this.nextRecevier.chainElementInput(inputIndex);
}
}
abstract public void printInformation(int receiverIndex);
}
接收者1
package com.company;
public class Receiver1 extends AbstractReceiver {
public Receiver1(int index) {
this.receiverIndex = index;
}
@Override
public void printInformation(int receiverIndex) {
System.out.println(this.getClass().getName());
}
}
接收者2
package com.company;
public class Receiver2 extends AbstractReceiver {
public Receiver2(int index) {
this.receiverIndex = index;
}
@Override
public void printInformation(int receiverIndex) {
System.out.println(this.getClass().getName());
}
}
接收者3
package com.company;
public class Receiver3 extends AbstractReceiver {
public Receiver3(int index) {
this.receiverIndex = index;
}
@Override
public void printInformation(int receiverIndex) {
System.out.println(this.getClass().getName());
}
}
多謝捧場
如果您覺得我的文章有價值晌端,那么賞臉打賞一個,鄙人感激不盡恬砂。不過咧纠,不打賞看看也是好的,如果有不對的地方泻骤,還請您多多指正漆羔。