定義乙個總的plugin介面 abstractplugin
public inte***ce abstractplugin
定義乙個獲取plugin的context類
@component
public class plugincontext
public static abstractplugin getabstractplugin(string type
)}
定義多個子類
public class aplugin implements abstractplugin
@override
public void doprocess(
)}
public class bplugin implements abstractplugin
@override
public void doprocess(
)}
使用
abstractplugin plugin = plugincontext.getabstractplugin(
"a")
;plugin.doprocess(
);
將aplugin和bplugin改為abstract抽象類
實現各自的子類
public class nativeaplugin extends aplugin
@override
public void doprocess(
)}
public class remoteaplugin extends aplugin
@override
public void doprocess(
)}
public class nativebplugin extends aplugin
@override
public void doprocess(
)}
public class remotebplugin extends aplugin
@override
public void doprocess(
)}
在配合策略模式在使用時可以根據具體業務使用子類的type獲取對應的實現。
在具體的實現中,各個子類的實現方法內,又很多是相同的邏輯,如初始化物件,列印日誌,報錯捕捉等,這些方法可以從各個子類方法中抽取出來,這樣可以是各個具體的實現只關注自己的業務邏輯。
建立模板類
public abstract class templateplugin
catch
(exception e)
// 列印結束日誌
}private void validate(
)
protected abstract void startprocess();
}
各子類繼承模板類,實現具體的startprocess方法進行具體的業務處理。
經過拆分後,不管是**閱讀還是之後新增刪除修改等維護都更加的方便清晰了。
策略模式,模板模式,工廠模式
自己不關心類是怎麼來的.我想要汽車,直接去 4s 店提就好,不用自己拼零件 spring 的 ioc dagger 都是這種依賴注入框架.舉個具體應用的例子 你哪天心情好把類名改了。或者把構造函式引數改了 增加或減少引數 而你 中又有n處new了這個類。如果你又沒用工廠。那你慘了。乙個乙個找來改吧。...
設計模式筆記 工廠模式
工廠模式主要是為建立物件提供過度介面,以便將建立物件的具體過程隔離,從而達到提高靈活性的目的 分類一 簡單工廠模式,工廠方法模式,抽象工廠模式 逐步抽象 分類二 工廠方法模式 包括簡單工廠模式 抽象工廠模式 1.簡單工廠模式又稱靜態工廠方法模式,存在目的 定義乙個用於建立物件的介面。組成 工廠類角色...
工廠模式 策略模式
目前遇到這樣乙個場景,就是會根據前端不同的傳值執行對應的方法策略。按照正常思路,需要在 中使用if判斷前端的值來執行不同的方法。但這樣做的缺點是會造成大量if判斷,且下次新增加乙個值對應乙個策略,那麼就需要改動 對於這種根據值來執行不同策略的場景,可以使用工廠模式 策略模式來解決。既然有策略,那麼我...