1. 程式人生 > 其它 >java設計模式-用介面和抽象類實現擴充套件

java設計模式-用介面和抽象類實現擴充套件

程式碼結構

第一步:新建一個介面

package com.chilly.handler;


import java.util.HashMap;
import java.util.Map;

/**
* 業務處理公共的業務介面和業務分類
*/
public interface InterfaceHandler {

public static final Map<String,InterfaceHandler> handlerMap = new HashMap<>();

public abstract String getCode();

public abstract void setHandler();

public abstract InterfaceHandler getHandler(String code);

public abstract void handler(Object params);
}

第二步:建立一個抽象類實現預設處理業務
package com.chilly.handler;

import sun.awt.SunHints;

import javax.annotation.PostConstruct;

public class AbstractHanlderService implements InterfaceHandler{

@Override
public String getCode() {
return "default";
}

/**
* PostConstruct註解,標識tomcat啟動完成時執行該方法
* @return
*/
@PostConstruct
@Override
public void setHandler() {
handlerMap.put(getCode(),this);
}

@Override
public InterfaceHandler getHandler(String code) {
return handlerMap.get(code);
}

@Override
public void handler(Object params) {
System.out.println("預設處理業務");
}
}
第三步:編寫其它業務處理邏輯
處理邏輯1
package com.chilly.handler.service;

import com.chilly.handler.AbstractHanlderService;

public class DeleteHandlerServiceImpl extends AbstractHanlderService {

public String getCode() {
return "delete";
}

@Override
public void handler(Object params) {
System.out.println("delete處理業務");
}
}

處理邏輯2
package com.chilly.handler.service;

import com.chilly.handler.AbstractHanlderService;

public class UpdateHandlerServiceImpl extends AbstractHanlderService {

public String getCode() {
return "update";
}

@Override
public void handler(Object params) {
System.out.println("update處理業務");
}
}

第四步:介面呼叫處理
package com.chilly.controller;

import com.chilly.handler.InterfaceHandler;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletRequest;

@RestController
public class HandlerController {

@PostMapping("/handler")
public String test(String code, HttpServletRequest request) {
InterfaceHandler handler = InterfaceHandler.handlerMap.get(code);
handler.handler(request);
return "handler ok";
}

}
用到知識點:@PostConstruct