日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

控制反转(IoC)-解析与实现

發布時間:2024/5/24 综合教程 34 生活家
生活随笔 收集整理的這篇文章主要介紹了 控制反转(IoC)-解析与实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

控制反轉(Inversion of Control)縮寫:IoC是面向對象編程中框架級別里的一個重要的概念,

可以說Spring框架的核心就是基于IoC原理的。

這個概念到底是什么呢?

這么講吧,一個系統的運作肯定不是簡單的幾個類就可以實現的,它往往需要多個類的合作來實現業務邏輯

。這就使得每個對象都需要與其合作的對象具有相互的關系(依賴關系)。在早前編程中所需要的依賴對象

是通過自身去創建得到的,而現在是通過一個容器來統一管理這些依賴關系。在這整個過程中,對象獲得其他對象引用的方式其實就是IoC。

IoC的本質是什么?

控制權的轉移。IoC原理是基于面向對象中的設計原則的The Hollywood Principle:Don't call us,we'll call you(別找我,我會來找你的)。

可以這樣講,所有組件的初始化和調用都是由容器負責。在傳統實現中類之間的關系是由類自己控制的(需要使用其他類時就自己創建),

但是在IoC中,組件處在容器中,由容器統一管理和調度。這就是"控制反轉"的概念所在:控制權由應用代碼轉移到了容器中,即控制權的轉移。

那如何實現IoC這種思想的呢?

實現IoC思想的方式主要有兩種:依賴注入和依賴查找。

下面就以依賴注入為例講解一下:

 1 1.先定義一個部門接口:
 2 
 3 public interface IDepartService {
 4     //通過員工編號獲得部門名字
 5     public String getDepartNameByUser(int userId);
 6 }
 7 
 8 2.實現該接口:
 9 public class DepartServiceImpl implements IDepartService {
10 
11     @Override
12     public String getDepartNameByUser(int userId) {
13         if(userId==1){
14             return "IT部門";
15         }
16         return "";
17     }
18 }
19 3.定義一個用戶類,該類中要維持部門對象的引用:
20 
21 public class UserServiceImpl {
22     private IDepartService departService;
23     
24     public void printInfo(int userId){
25         System.out.print(getUserName(userId));
26         System.out.println(departService.getDepartNameByUser(userId));
27     }
28     
29     public String getUserName(int userId){
30         if(userId==1){
31             return "張三 ";
32         }
33         return "";
34     }
35 }

在用戶類中,我們沒有看到關于創建DepartService對象的語句。這里面我們沒有采用常見的set注入或者構造方法注入,

而是采用反射的方法直接注入并執行的,要實現這個效果的話,我們需要定義一個容器,來管理他們的關系。

4.定義容器,我們在容器中先獲取配置文件:
public class Container {
    ......
    private void loadConfig() {
        // TODO Auto-generated method stub
        InputStream is = Container.class.getResourceAsStream("/ioc.properties");
        properties = new Properties();
        try {
            properties.load(is);
        } catch (Exception e) {
            // TODO: handle exception
        }
    }

    public Object get(String name) {
        String className = (String) properties.get(name);
        return Class.forName(className).newInstance();
            ......
    }

    public void inject(Object obj) {
        Field[] fields = obj.getClass().getDeclaredFields();
            ......
            for (Field field : fields) {
                field.setAccessible(true);
                field.set(obj, get(field.getName()));
            }
           ......
    }
}
在上述中,首先獲取配置文件中已配置好的依賴關系,然后采用反射技術根據依賴關系進行創建相應的對象
5.其中ioc.properties的內容為:
departService=com.service.impl.DepartServiceImpl
6.查看入口方法:
public static void main(String[] args) {
        UserServiceImpl user=new UserServiceImpl();
    
        Container container=new Container();
        container.inject(user);
        user.printInfo(1);
}

7.查看結果:

總結:可以說IoC這個思想是一個很偉大的思想,現在很多大神甚至將它歸為GoF中(因為IoC出現的比較晚,錯過了GoF“四人組”的《Design Patterns: Elements of Reusable Object-Oriented Software》)。

總結

以上是生活随笔為你收集整理的控制反转(IoC)-解析与实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 又粗又大又硬毛片免费看 | 亚洲www啪成人一区二区麻豆 | 亚洲欧美另类综合 | 午夜免费福利影院 | 久久久久久国产精品免费免费 | 99在线播放视频 | 国内精品少妇 | 日批视屏 | 久久精品国产大片免费观看 | 日韩精品免费一区 | 成年人看的羞羞网站 | 一本色道久久亚洲综合精品蜜桃 | 狠久久| av片免费在线 | 久草综合在线视频 | 91在线视频精品 | 少妇高潮淫片免费观看 | 九九99精品视频 | 欧美一级片a | 麻豆回家视频区一区二 | 6080av| 久久久老熟女一区二区三区91 | 国产美女一级视频 | 美女无遮挡免费网站 | 五月天av在线 | 国产在线观看 | 亚洲第一二区 | 在线观看精品一区 | 亚洲九九夜夜 | 精品蜜桃一区二区三区 | 男女羞羞无遮挡 | 草草影院在线观看 | 另类专区亚洲 | 欧美aaa在线观看 | 国产精品1000部啪视频 | 国产91在线播放 | 激情亚洲视频 | 九九在线观看高清免费 | 夫妻自拍偷拍 | 亚洲伦理在线观看 | 一区二区三区精品在线 | 色婷婷久久综合 | 在线天堂网 | 欧美猛男gaygay| gogo亚洲国模私拍人体 | 精品视频入口 | 爱上av| 久热这里有精品 | a毛片大片| 国产蜜臀在线 | 久久久久午夜 | 影音先锋资源av | 天堂av免费观看 | 亚洲国产成人一区二区 | 美女隐私免费看 | 青青草97国产精品免费观看 | 无人在线观看高清视频 单曲 | 免费看成人av | 在线免费一区二区 | 国产爽爽爽 | 九九亚洲精品 | 一级看片 | aaa一级黄色片 | 午夜不卡福利视频 | sm久久捆绑调教精品一区 | 国产91热爆ts人妖系列 | 男裸体无遮挡网站 | 一级香蕉视频在线观看 | 国产极品粉嫩 | 一级片网址| 37p粉嫩大胆色噜噜噜 | 国产黄色在线播放 | 99久久久无码国产精品免费蜜柚 | 国产av人人夜夜澡人人爽 | 调教91 | 天天操夜夜草 | 欧美视频一 | 日韩三区视频 | 欧美日韩国产一级 | 有码av在线 | 天天色综 | 免费av小说 | 国产一区二区三区免费观看 | 国产精品每日更新 | 婷婷激情社区 | 欧美视频四区 | 精品无码一区二区三区免费 | 国产精品麻豆视频 | 日韩成人在线影院 | 最新av免费在线观看 | 欧美久草视频 | av线上免费观看 | 高跟丝袜av | 日本精品在线视频 | 宝贝乖h调教灌尿穿环 | 国产精品综合一区二区 | 欧美成人精品三级网站 | 国产大奶在线观看 | 青青草国产成人av片免费 |