最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java通過(guò)工廠、Map容器創(chuàng)建對(duì)象的方法

 更新時(shí)間:2021年03月30日 09:34:14   作者:小小張自由—>張有博  
這篇文章主要介紹了Java通過(guò)工廠、Map容器創(chuàng)建對(duì)象的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

一、通過(guò)工廠+反射+配置文件創(chuàng)建對(duì)象

通過(guò)工廠+反射+配置文件獲取對(duì)象

/**
 * @Author: Promsing
 * @Date: 2021/3/7 - 10:09
 * @Description: 通過(guò)使用工廠+配置文件+反射實(shí)現(xiàn)創(chuàng)建對(duì)象
 * @version: 1.0
 */
public class AbsFactory {
 
 //聲明一個(gè)變量(多例模式,每次通過(guò)工廠都會(huì)創(chuàng)建一個(gè)不同的實(shí)例)
 private static Object obj;
 
 public static Object createType(String createName){
  //自動(dòng)釋放資源--使用絕對(duì)路徑
  try( InputStream is =new FileInputStream("src\\Factory.properties")) {
   //配置文件類
   Properties pro=new Properties();
   pro.load(is);
   // System.out.println(pro.size());
   //獲取參數(shù)
   String property = pro.getProperty(createName);
   obj = Class.forName(property).newInstance();
   
  } catch (InstantiationException e) {
   e.printStackTrace();
  } catch (IllegalAccessException e) {
   e.printStackTrace();
  } catch (ClassNotFoundException e) {
   e.printStackTrace();
  } catch (FileNotFoundException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  }finally {
   return obj;
  }
 }
 
}

配置文件如下

//以Key,Value的形式,主要Value要寫全類名,不要加分號(hào)
accountService=com.dynamic.service.Impl.AccountServiceImpl
accountDao=com.dynamic.dao.Impl.AccountDaoImpl

二、通過(guò)Map容器間接獲取對(duì)象

通過(guò)Map容器間接獲取對(duì)象,與Spring中的IOC容器類似,采用立即加載策略

/**
 * @Author: Promsing
 * @Date: 2021/3/19 - 11:50
 * @Description: 模仿IOC容器,將創(chuàng)建的對(duì)象放在Map集合中,加載該類時(shí)會(huì)讀取配置文件中,將類放入Map中
 * @version: 1.0
 */
public class BeanFactory {
 //定義一個(gè)properties對(duì)象
 private static Properties props;
 //定義一個(gè)Map,用于存放我們創(chuàng)建的對(duì)象(單例,當(dāng)類加載之后就有了對(duì)象,之后從Map中獲?。?
 private static Map<String,Object> beans;
 
 //容器
 static {
  try {
   props=new Properties();
   //將bean.properties放在了resources路徑下
   InputStream is=BeanFactory.class.getClassLoader().getResourceAsStream("bean.properties");
   props.load(is);
   //實(shí)例化容器
   beans=new HashMap<String,Object>();
   //從配置文件中獲取所有key值
   Enumeration<Object> keys = props.keys();
   while (keys.hasMoreElements()){
    //取出每一個(gè)key
    String key = keys.nextElement().toString();
    //根據(jù)key獲取value
    String path = props.getProperty(key);
    Object value=Class.forName(path).newInstance();
    //放入容器中
    beans.put(key,value);
   }
  }catch (Exception e){
   e.printStackTrace();
  }
 
 }
 
 //提供一個(gè)訪問(wèn)Map容器的入口
 public static Object getInstance(String name){
  return beans.get(name);
 }
 
}

配置文件內(nèi)容如下

accountService=com.dynamic.service.Impl.AccountServiceImpl
accountDao=com.dynamic.dao.Impl.AccountDaoImpl

以上兩部分歸到根上都是通過(guò)反射創(chuàng)建對(duì)象,JDK8在反射創(chuàng)建對(duì)象時(shí),做了很大的增強(qiáng),提高了性能。其實(shí)Spring IOC與以上實(shí)現(xiàn)創(chuàng)建對(duì)象的原理是一致的,Spring IOC做的就是這件事情,只是它封裝的更好而已(當(dāng)然還有其他的增強(qiáng),O(∩_∩)O哈哈~)。

到此這篇關(guān)于Java通過(guò)工廠、Map容器創(chuàng)建對(duì)象的方法的文章就介紹到這了,更多相關(guān)java創(chuàng)建對(duì)象內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java將對(duì)象保存到文件中/從文件中讀取對(duì)象的方法

    Java將對(duì)象保存到文件中/從文件中讀取對(duì)象的方法

    下面小編就為大家?guī)?lái)一篇Java將對(duì)象保存到文件中/從文件中讀取對(duì)象的方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-12-12
  • 深入理解什么是Mybatis懶加載(延遲加載)

    深入理解什么是Mybatis懶加載(延遲加載)

    這篇文章主要介紹了深入理解什么是Mybatis懶加載(延遲加載),mybatis的懶加載,也稱為延遲加載,是指在進(jìn)行關(guān)聯(lián)查詢的時(shí)候,按照設(shè)置延遲規(guī)則推遲對(duì)關(guān)聯(lián)對(duì)象的select查詢,延遲加載可以有效的減少數(shù)據(jù)庫(kù)壓力,需要的朋友可以參考下
    2023-10-10
  • Java如何利用策略模式替代if/else語(yǔ)句

    Java如何利用策略模式替代if/else語(yǔ)句

    這篇文章主要介紹了Java如何利用策略模式替代if/else語(yǔ)句,幫助大家優(yōu)化自己的代碼,提高程序運(yùn)行效率,感興趣的朋友可以了解下
    2020-09-09
  • java?http請(qǐng)求獲取圖片并返回文件流給前端的方法步驟

    java?http請(qǐng)求獲取圖片并返回文件流給前端的方法步驟

    作為一名Java后端開(kāi)發(fā)者,掌握如何從后端返回文件流至前端是基本技能之一,這篇文章主要介紹了java?http請(qǐng)求獲取圖片并返回文件流給前端的方法步驟,需要的朋友可以參考下
    2024-09-09
  • 詳解JAVA 線程-線程的狀態(tài)有哪些?它是如何工作的?

    詳解JAVA 線程-線程的狀態(tài)有哪些?它是如何工作的?

    這篇文章主要介紹了詳解JAVA 線程的的相關(guān)資料,文中講解非常細(xì)致,源碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以參考下
    2020-06-06
  • Java中的transient關(guān)鍵字解析

    Java中的transient關(guān)鍵字解析

    這篇文章主要介紹了Java中的 transient關(guān)鍵字解析,有時(shí)候我們的一些敏感信息比如密碼并不想序列化傳輸給對(duì)方,這個(gè)時(shí)候transient關(guān)鍵字就派上用場(chǎng)了,如果一個(gè)類的變量加上了transient關(guān)鍵字那么這個(gè)字段就不會(huì)被序列化,需要的朋友可以參考下
    2023-09-09
  • SpringCloud LoadBalancer自定義負(fù)載均衡器使用解析

    SpringCloud LoadBalancer自定義負(fù)載均衡器使用解析

    LoadBalancerClient 是 SpringCloud 提供的一種負(fù)載均衡客戶端,Ribbon 負(fù)載均衡組件內(nèi)部也是集成了 LoadBalancerClient 來(lái)實(shí)現(xiàn)負(fù)載均衡,本文給大家深入解析 LoadBalancerClient 接口源碼,感興趣的朋友跟隨小編一起看看吧
    2023-04-04
  • Java中URL的處理方法詳解

    Java中URL的處理方法詳解

    URL(Uniform?Resource?Locator)中文名為統(tǒng)一資源定位符,有時(shí)也被俗稱為網(wǎng)頁(yè)地址,表示為互聯(lián)網(wǎng)上的資源,本文主要為大家介紹了Java是如何處理URL的,感興趣的可以了解一下
    2023-05-05
  • 詳解java整合solr5.0之solrj的使用

    詳解java整合solr5.0之solrj的使用

    本篇文章主要介紹了詳解java整合solr5.0之solrj的使用 ,具有一定的參考價(jià)值,有興趣的可以了解下
    2017-06-06
  • 徹底搞懂java并發(fā)ThreadPoolExecutor使用

    徹底搞懂java并發(fā)ThreadPoolExecutor使用

    這篇文章主要為大家介紹了徹底搞懂java并發(fā)ThreadPoolExecutor使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02

最新評(píng)論

景德镇市| 革吉县| 建昌县| 唐山市| 铁力市| 怀集县| 黔西| 类乌齐县| 亚东县| 清水河县| 巩留县| 江山市| 宁武县| 万山特区| 理塘县| 简阳市| 阳新县| 广灵县| 乌拉特后旗| 永春县| 云龙县| 汪清县| 濮阳市| 波密县| 巴青县| 昔阳县| 渝中区| 安宁市| 金阳县| 日照市| 子洲县| 旬阳县| 咸宁市| 巴林右旗| 武山县| 大埔区| 延吉市| 巴东县| 桐庐县| 彩票| 偃师市|