Unity 四 使用場景 建立型別對映

2021-06-16 04:25:12 字數 1544 閱讀 4108

在之前的一篇文章「unity(三):快速入門

」中,給出了乙個簡單的示例,讓我們對unity有乙個感性的認識。但是,unity到底是做什麼用的呢?乙個簡單示例並不能解答這個問題。

總的來看,unity的使用場景主要有以下幾個:

接下來,將逐一介紹各使用場景。 

在建立物件時,毫無疑問,型別對映是我們無法迴避的乙個問題,同時也是一系列工廠模式的根本出發點。型別對映,為物件導向設計的根本原則——「針對介面程式設計,而不是針對實現程式設計」、「要依賴抽象,不要依賴具體類」——在應用中的實現,提供了有力的支援。

我們知道,unity提供了物件的容器,那麼這個容器是如何進行索引的呢?也就是說,容器內的單元是如何標識的呢?在unity中,標識主要有兩種方式,一種是直接使用介面(或者基類)作為標識鍵,另一種是使用介面(或者基類)與名稱的組合作為標識鍵。鍵對應的值就是具體類。

實際上,之前的「unity(三):快速入門

」中給出的例子,就是介面型別作為標識鍵的乙個使用場景,這裡就不再重複。

這裡需要指出的是,unity提供的功能都有泛型和非泛型兩個版本,這樣可以確保 unity 在不支援泛型的環境中使用。我們在**中可以使用任意一種方法(泛型和非泛型),或者根據需要混合使用。例如,可以使用泛型形式來註冊對映,然後使用非泛型形式去獲取物件例項。

下面的**演示了非泛型形式的使用:

用基類作為標識鍵,在本質上與用介面型別作為標識鍵是一樣的。這裡需要注意的是,基類並不一定是指抽象類。下面是使用基類作為標識鍵的例子:

有趣的是,這裡如果直接container.registertype();的話,是可以resolve出來的,但是如果我們container.registertype();的話,執行時就會報異常了。

如果需要使用同樣的介面(或基類)註冊多個對映,可以指定名稱來區分每個對映。在需要resolve的時候,通過指定介面(或基類)與名稱的組合作為標識鍵,就可以獲取恰當型別的物件。下面的例子以介面與名稱的組合為例,基類與名稱的組合作為標識鍵同理,不再贅述(有關ilogger等**見「unity(三):快速入門

」中給出的準備**)。:

0 0(請您對文章做出評價)

redis 資料型別使用場景

redis各個資料型別的使用場景redis支援五種資料型別 string 字串 hash 雜湊 list 列表 set 集合 及zset sorted set 有序集合 redis列表命令 參考 使用場景string string資料結構是簡單的key value型別,value其實不僅可以是str...

redis 資料型別使用場景

redis各個資料型別的使用場景 redis支援五種資料型別 string 字串 hash 雜湊 list 列表 set 集合 及zset sorted set 有序集合 redis列表命令 參考 使用場景string string資料結構是簡單的key value型別,value其實不僅可以是st...

Redis 資料型別 使用場景

string 一般做一些複雜的計數功能的快取 list 做簡單的訊息佇列的功能 hash 單點登入 set 做全域性去重的功能 sortedset 做排行榜應用,取topn操作 延時任務 做範圍查詢 簡介特性 場景string 字串 redis的字串是動態字串,是可以修改的字串,它的內部表示就是乙個...