陕西快乐十分1209049期开奖结果:服務支持

抽象工廠模式在unity3d里面的使用(轉)

抽象工廠模式在unity3d里面的使用(轉)

陕西快乐十分中7个号 www.wegive.com.cn 今天咱們就要開啟工廠家族里面的較后一個模式—抽象工廠模式。在修煉抽象工廠模式心法之前我先說個例子,大家都應該知道葵花寶典吧。想必你可能知道欲練此功必先自宮,哈哈!或許你看到的只是他的上半部,但當你看到下半部結尾一行醒目的文字-欲練此功也可不必自宮,此刻傻眼了吧!失去了獨領風騷的快感。由此例子,來引出產品族的概念??ūΦ淶納舷虜坎訟嗷ビ跋煬涂梢勻銜且桓霾紛?。所謂產品族,是指位于不同產品等級結構,功能相關聯的產品組成的家族。由產品族,我們來進入抽象工廠模式。抽象工廠模式是工廠方法的升級版,是所有形態的工廠模式中較為抽象和較具一般性的形態。因此所謂的抽象工廠是一個工廠等級結構可以創建分屬于不同產品等級結構的一個產品族中的所有對象。說了那么多了讓我們開始修煉抽象工廠模式的心法吧。
修煉抽象工廠模式的心法如下:
1)抽象工廠角色AbstractFactory:此角色是工廠方法模式的核心,與系統業務邏輯無關。
2)具體工廠角色ConcreteFactory:此角色在客戶端的調用下創建產品的實例。他包含有選擇合適產品對象的邏輯,而這個邏輯是與應用系統的業務邏輯緊密相關。
3)抽象產品角色AbstractProduct:擔任這個角色的類是工廠方法模式所創建對象的父類或他們共同擁有的接口。
4) 具體產品角色ConcreteProduct:抽象工廠模式所創建的任何產品對象都是某一個具體產品類的實例。這是客戶端較終需要的東西,里面包含了應用系統的業務邏輯。

修煉抽象工廠模式的武功套路如下:

(備注:上面是抽象工廠模式demo里面的定向關系圖文檔的截圖!)

修煉心法與武功套路的對應:
1)抽象工廠角色AbstractFactory對應武功套路里面的ResourceAbstractFactory。
2)具體工廠角色ConcreteFactory對應武功套路里面的PrimaryManagerFactory和AssistantManagerFactory。
3)抽象產品角色AbstractProduct對應武功套路里面的UIResourceAbstract和AudioResourceAbstract。
4)具體產品角色ConcreteProduct對應武功套路里面的PrimaryUIManager和PrimaryAudioManager、AssistantUIManager和AssistantAudioManager。

上面描述了抽象工廠模式的修煉心法和武功套路。下面就給出具體的套路細節。
建議:看下面代碼之前,可以先根據抽象工廠模式的心法及對應的武功套路先行修煉。

抽象工廠角色:

 

<blockquote>using UnityEngine;

具體工廠角色:
產品族一:PrimaryManagerFactory工廠

 

<blockquote>using UnityEngine;

產品族二:AssistantManagerFactory工廠

 

<blockquote>using UnityEngine;

抽象產品角色:
音頻資源抽象產品

 

<blockquote>using UnityEngine;

UI資源抽象產品

 

抽象工廠模式的優點:
1) 分離了具體的類,一個工廠封裝創建產品對象的責任和過程,將客戶端與類的實現分離。有利于產品系列的交換。只需改變具體的工程就可以使用不同的產品配置。
2) 有利于產品的一致性,當一個系列中的產品對象被設計成一起工作時一個應用一次只能使用同一個系列中的對象。
3) 良好的封裝性,每個產品的實現類不是高層??橐匭牡?。更好的遵循了依賴倒置(DIP)的原則。
抽象工廠模式的缺點:
抽象工廠較大的缺點就是產品族擴展非常困難,難以支持新的產品等級結構,如果要支持新的產品等級結構就要擴展抽象工廠接口。這樣就涉及到抽象工廠類及所有具體工廠子類的改變,違背了“開放-封閉(OCP)”的原則。

GoF23設計模式里面的每種模式都是針對某類特定問題的解決策略。所以沒有什么設計模式是完美的!

Tips:抽象工廠還可以配合.Net 里面的反射技術來去除Switch或If來解除分支判斷帶來的耦合。同時還可以借助依賴注入(DI)或者專門的IOC來幫助我們克服抽象工廠模式的先天不足。例子大家可以自行搜索查看,或者看Unity3d專用的IOC 框架,例如Strange IOC框架(注:在Unity Asset Store有free download),簡單提下,此框架支持web,mobile平臺,同時他還有MVC部分擴展,所有的都是針對unity3d的可以學習下。

(發帖字數限制,代碼看不了,看代碼可到原文鏈接)
原文鏈接://www.unity.5helpyou.com/2531.html

售前客服

售后客服

分享到

營業時間

09:30-18:30