設計模式—鏈路模式(實例)


 

設計模式—鏈路模式(實例)

第一步:設置參數dto

/**
* 請求DTO
*/
public class RequestDTO {

}

第二步:設置父類handler

public abstract class ParentHandler {
protected ParentHandler nextHandler;

protected ApplicationContext context = SpringContextUtil.getApplicationContext();

protected abstract boolean needHandler(RequestDTO request);

/**
* 子類handler需重寫該handler()方法
* @param request
*/
protected void handler(RequestDTO request){
ParentHandler handler =this.nextHandler;
while (handler !=null){
if(handler.needHandler(request)){
handler.handler(request);
}
handler =handler.nextHandler;
}
}
/**
* 設置nextHandler
* @param nextHandler
* @return
*/
protected ParentHandler setNextHandler(ParentHandler nextHandler){
this.nextHandler =nextHandler;
return this.nextHandler;
}
}

第三步:設置子類handler

第一個子類handler

public class FirstHandler extends ParentHandler{
@Override
protected boolean needHandler(RequestDTO request) {
return true;
}

@Override
protected void handler(RequestDTO request){
System.out.println("FirstHandler.handler");
//此處只有在firstHandler中添加,其他的子類handler不能添加
super.handler(request);
}
}

第二個子類handler

public class SecondHandler extends ParentHandler {
@Override
protected boolean needHandler(RequestDTO request) {
return true;
}

@Override
protected void handler(RequestDTO request){
System.out.println("SecondHandler.handler");
}
}

第三個子類handler

public class ThirdHandler extends ParentHandler {
@Override
protected boolean needHandler(RequestDTO request) {
return true;
}

@Override
protected void handler(RequestDTO request){
System.out.println("ThirdHandler.handler");
}
}

子類handler按需添加 。。。。。

第四步:設置handler工廠類,main方法測試

public class HandlerFactroy {
private static ParentHandler handlerLinked =new FirstHandler();
static {
handlerLinked
.setNextHandler(new SecondHandler())
.setNextHandler(new ThirdHandler());
}

public static ParentHandler getHandlerLinked(){
return handlerLinked;
}

public static void main(String[] args){
RequestDTO requestDTO =new RequestDTO();
HandlerFactroy.getHandlerLinked().handler(requestDTO);
}

}





免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM