看到之前寫的一些東西,發(fā)現(xiàn)其實以前寫過很多東西,沒有總結出來,到處亂放
現(xiàn)在統(tǒng)統(tǒng)記錄一下,以便備忘!
責任鏈模式:我個人理解,一方面就是鏈化了,另一方面就是可以將職責分離確認。
然后解耦合,擴展性更高更好,調整順序也容易。
下邊是以前寫的一個小demo。
/**
* Created by kevin on 17/8/7.
*/
public class ChargeHandlerImpl extends AbstractHandler {
@Override
public IHandler doHandler(int params) {
if(params >= 150 ){
System.out.println("主管通過審批!");
if(getHandler() != null){
getHandler().doHandler(params);
}
}
return null;
}
}
/**
* Created by kevin on 17/8/7.
*/
public class CoderHandlerImpl extends AbstractHandler {
@Override
public IHandler doHandler(int params) {
if(params >= 100 ){
System.out.println("開發(fā)人員通過審批!");
if(getHandler() != null){
getHandler().doHandler(params);
}
}
return null;
}
}
/**
* Created by kevin on 17/8/7.
*/
public class PmHandlerImpl extends AbstractHandler {
@Override
public IHandler doHandler(int params) {
if(params >= 200 ){
System.out.println("項目經理通過審批!");
if(getHandler() != null){
getHandler().doHandler(params);
}
}
return null;
}
}
/**
* Created by kevin on 17/8/7.
*/
public abstract class AbstractHandler implements IHandler{
private IHandler handler;
public IHandler getHandler(){
return handler;
}
public IHandler setNextHandler(IHandler handler){
this.handler = handler;
return this;
}
}
/**
* Created by kevin on 17/8/7.
*/
public interface IHandler {
public abstract IHandler doHandler(int params);
}
/**
* 需要進行一組審批流程,審批人員為 開發(fā)人員 主管 項目經理
* 如果流程正確,可以直接使用System.out.println("主管通過審批!");表示主管審批通過!
*
* 假設發(fā)起審批的參數(shù)值為變量:
* 當 params >= 100時 開發(fā)人員通過審批;
* 當 params >= 150時, 主管通過審批;
* 當 params >= 200時, 主管通過審批.
*
* 請從擴展性跟維護性上對該流程進行編碼.
* 提示,某天需要添加數(shù)位審批人員,在不影響可讀性上進行擴展.
* Created by kevin on 17/8/7.
*/
public class runChain {
public static void main(String[] args) {
IHandler handler = new CoderHandlerImpl().setNextHandler(new ChargeHandlerImpl().setNextHandler(new PmHandlerImpl()));
handler.doHandler(150);
}
}