架構設計自己無好壞,只有最適用的纔是最好的;架構設計也不是越複雜越好,簡單明瞭,穩定不出錯,高效,方便閱讀纔是好的架構設計。 今天就遇到這麼個設計,目標是:系統自動加載mq的自定義一套Adapter 實現:在配置文件中定義Adapter路徑,掃描相應路徑,若是沒有找到對應url路徑,掃描當前系統全部路徑,獲取全部的文件類名,經過Class.forName獲取class,若是繼承了對應MessageAdapter接口,經過反射實例化放入緩存。緩存
現象:在老項目中正常,在新項目中報錯,後續將具體錯誤緣由。3年前的老代碼,除了做者本身的1個實現類,再沒有其餘人使用。架構
結論:想法是很好的,想靈活自定義,可是路程有點曲折。mq這一類普遍使用的組件,擴展最好基於官方擴展,根據官方提供的擴展點來擴展,絕大部分狀況下無需本身在官方之上又封裝幾層,這是其一。其二對於通常項目而言,無需太靈活,靈活帶來更多的複雜度,這裏徹底能夠代碼裏面寫死Adapter類,或者放到配置文件直接讀就能夠了。其三當沒有找到對應路徑的時候,徹底就能夠返回了,無需把範圍擴散到整個系統,最多記錄相應日誌就能夠了。url