天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

依賴注入那些事兒

寫在前面的話

昨天在博客園上看到一篇博文,名為“什么是依賴注入?(來聽一個笑話)”[點擊這里訪問]。可以看出,作者是想以一種輕松幽默的方式對依賴注入的思想進行一個闡述。不過在讀完文章后,個人覺得文章過于淺薄,沒有真正將依賴注入的思想解釋清楚,也沒有深入的分析和具體的示例,所用比喻也有點低俗(至少筆者讀完文章后覺得胃里不是很舒服)。

但是,這篇博文啟發了我。回想自己平常的學習和工作,依賴注入確實是軟件架構和開發中一個十分重要的概念和技術,筆者參與的幾乎每一個項目都用到了它,并且得到了很好的效果。于是,筆者萌發了寫這篇文章的想法,意在將依賴注入這項概念本身結合筆者的實踐經驗及所感所想,做一個相對完整的綜述,并總結于此文。一來可以和朋友們分享這項技術及個人心得,二來也是自己對這項技術做的一個總結。

目錄

寫在前面的話

目錄

1 IGame游戲公司的故事

    1.1 討論會

    1.2 實習生小李的實現方法

    1.3 架構師的建議

    1.4 小李的小結

2 探究依賴注入

    2.1 故事的啟迪

    2.2 正式定義依賴注入

3 依賴注入那些事兒

    3.1 依賴注入的類別

        3.1.1 Setter注入

        3.1.2 Construtor注入

        3.1.3 依賴獲取

    3.2 反射與依賴注入

    3.3 多態的活性與依賴注入

        3.3.1 多態性的活性

        3.3.2 不同活性多態性依賴注入的選擇

4 IoC Container

    4.1 IoC Container出現的必然性

    4.2 IoC Container的分類

        4.2.1 高侵入度IoC Container

        4.2.2 低侵入度IoC Container

    4.3 .NET平臺上典型IoC Container推介

        4.3.1 Spring.NET

        4.3.2 Unity

參考文獻

1 IGame游戲公司的故事

1.1 討論會

話說有一個叫IGame的游戲公司,正在開發一款ARPG游戲(動作&角色扮演類游戲,如魔獸世界、夢幻西游這一類的游戲)。一般這類游戲都有一個基本的功能,就是打怪(玩家攻擊怪物,借此獲得經驗、虛擬貨幣和虛擬裝備),并且根據玩家角色所裝備的武器不同,攻擊效果也不同。這天,IGame公司的開發小組正在開會對打怪功能中的某一個功能點如何實現進行討論,他們面前的大屏幕上是這樣一份需求描述的ppt:

圖1.1 需求描述ppt

各個開發人員,面對這份需求,展開了熱烈的討論,下面我們看看討論會上都發生了什么。

1.2 實習生小李的實現方式

在經過一番討論后,項目組長Peter覺得有必要整理一下各方的意見,他首先詢問小李的看法。小李是某學校計算機系大三學生,對游戲開發特別感興趣,目前是IGame公司的一名實習生。

經過短暫的思考,小李闡述了自己的意見:

“我認為,這個需求可以這么實現。HP當然是怪物的一個屬性成員,而武器是角色的一個屬性成員,類型可以使字符串,用于描述目前角色所裝備的武器。角色類有一個攻擊方法,以被攻擊怪物為參數,當實施一次攻擊時,攻擊方法被調用,而這個方法首先判斷當前角色裝備了什么武器,然后據此對被攻擊怪物的HP進行操作,以產生不同效果。”

而在闡述完后,小李也飛快的在自己的電腦上寫了一個Demo,來演示他的想法,Demo代碼如下。

Code:怪物

   1: using System;
   2: using System.Collections.Generic;
   3: using System.Linq;
   4: using System.Text;
   5:  
   6: namespace IGameLi
   7: {
   8:     /// 
   9:     /// 怪物
  10:     /// 
  11:     internal sealed class Monster
  12:     {
  13:         /// 
  14:         /// 怪物的名字
  15:         /// 
  16:         public String Name { get; set; }
  17:  
  18:         /// 
  19:         /// 怪物的生命值
  20:         /// 
  21:         public Int32 HP { get; set; }
  22:  
  23:         public Monster(String name,Int32 hp)
  24:         {
  25:             this.Name = name;
  26:             this.HP = hp;
  27:         }
  28:     }
  29: }

it知識庫依賴注入那些事兒,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 久久不卡免费视频 | qovd电影| 国产偷抇久久精品A片蜜臀AV | 亚色九九九全国免费视频 | 纯肉无码AV在线看免费看 | 最近中文字幕免费高清MV视频6 | 亚洲欧洲日本无在线码播放 | 亚洲精品无码国产爽快A片百度 | 97人妻精品全国免费视频 | 无限资源好看片2019免费观看 | 成年视频国产免费观看 | 成人高清网站 | yin荡体育课羞耻play双性 | 美女露100%全身无遮挡 | 人妻换人妻AA视频 | 色偷偷伊人 | 69精品国产人妻蜜桃国产毛片 | 国产麻豆剧看黄在线观看 | 老板吻我下身好爽到高潮 | 男男高h浪荡受h | 亚洲白色白色在线播放 | 快播dvd吧| 久久99国产精品二区不卡 | 亚洲AV无码乱码国产麻豆P | 女人把腿张开叫男人桶免费视频 | 国产成人免费网站在线观看 | 亚洲AV无码乱码国产精品品麻豆 | 黄色三级视频在线 | 亚洲色噜噜狠狠站欲八 | 男人的天堂久久精品激情a 男人的天堂黄色片 | 嫩草影院在线观看网站成人 | 美女被黑人巨大进入 | 亚洲免费精品视频 | 一手揉着乳头一手模仿抽插视频 | 亚洲AV无码专区国产乱码网站 | 男插女高潮一区二区 | 果冻传媒mv国产陈若瑶主演 | 亚洲精品AV一区午夜福利 | 国产精品亚洲在钱视频 | 国产午夜精品理论片在线 | 高H黄暴NP辣H一女多男 |