在日常開發過程中經常需要獲取類的擴充套件集。即獲取類的子類集(抽象類),或者介面實現類。比如說狀態模式中,狀態構建類,策略模式中的,策略構造方式。本文介紹幾種獲取方式。
以策略模式為例定義了2種策略
@getter
@allargsconstructor
public enum strategyenum
public static mapgetbeansoftype(final classtype)
return null;
}
spring提供了很多的擴充套件,允許我們在初始化bean之前,之後做一些自定義邏輯。當然也可以在spring裝配整個過程完成後做一些注入的邏輯
@service
public class instancebyspring implements instancefactory, initializingbean
if (!collectionutils.isempty(handles))
}@override
public abstractstate getstateinstance(final stateenum stateenum)
@override
public handle getstrategyinstance(final strategyenum strategyenum)
}
離了spring還能不能活,當然可以了。jdk本身提供了擴充套件支援serviceloader
類。
meta-inf/services配置類
serviceloader.load
public class instancebyserviceloader implements instancefactory
return result.stream().collect(collectors.tomap(p -> p.getcode(), function.identity())).get
(stateenum);
} 總結
這邊是以介面類來介紹的,對於介面也同樣適用。完整**見github
JAVA基礎(String類獲取功能)
1,string類的獲取功能 package com.xiaoshuai.string public class demo5 stringmethod private static void demo4 private static void demo3 private static void de...
Java基礎(類與物件1)
1 物件導向思想 物件導向是基於面向過程的程式設計思想。面向過程 強調的是每乙個功能的步驟 物件導向 強調的是物件,然後由物件去呼叫功能 物件導向的思想特點 a 是一種更符合我們思考習慣的思想 b 可以將複雜的事情簡單化 c 將我們從執行者變成了指揮者 2 類和物件的概念 a 類 是一組相關的屬性和...
Java獲取路徑的幾種方式
private static string file name zxl.txt 第一種 new classpathresource 檔名 classpathresource classpathresource new classpathresource file name file file cla...