Unity单例模式+例子
Unity單例模式
- 什么是單例模式?
- 什么時候用到?
- 優(yōu)點
- 缺點
- Unity單例模式例子
什么是單例模式?
答:單例模式(Singleton),也叫單子模式,是一種常用的軟件設(shè)計模式。在應(yīng)用這個模式時,單例對象的類必須保證只有一個實例存在。許多時候整個系統(tǒng)只需要擁有一個的全局對象,這樣有利于我們協(xié)調(diào)系統(tǒng)整體的行為。比如在某個服務(wù)器程序中,該服務(wù)器的配置信息存放在一個文件中,這些配置數(shù)據(jù)由一個單例對象統(tǒng)一讀取,然后服務(wù)進(jìn)程中的其他對象再通過這個單例對象獲取這些配置信息。這種方式簡化了在復(fù)雜環(huán)境下的配置管理。
什么時候用到?
答:當(dāng)游戲中的某一個游戲?qū)ο笥肋h(yuǎn)只有一個實例的時候,那么可以使用單例模式。
優(yōu)點
(1) 由于單例模式在內(nèi)存中只有一個實例,減少內(nèi)存開支,特別是一個對象需要頻繁地創(chuàng)建銷毀時,而且創(chuàng)建或銷毀時性能又無法優(yōu)化,單例模式就非常明顯了
(2) 由于單例模式只生成一個實例,所以,減少系統(tǒng)的性能開銷,當(dāng)一個對象產(chǎn)生需要比較多的資源時,如讀取配置,產(chǎn)生其他依賴對象時,則可以通過在應(yīng)用啟動時直接產(chǎn)生一個單例對象,然后永久駐留內(nèi)存的方式來解決。
(3) 單例模式可以避免對資源的多重占用,例如一個寫文件操作,由于只有一個實例存在內(nèi)存中,避免對同一個資源文件的同時寫操作
(4) 單例模式可以在系統(tǒng)設(shè)置全局的訪問點,優(yōu)化和共享資源訪問,例如,可以設(shè)計一個單例類,負(fù)責(zé)所有數(shù)據(jù)表的映射處理。
缺點
(1) 單例模式一般沒有接口,擴(kuò)展很困難,若要擴(kuò)展,除了修改代碼基本上沒有第二種途徑可以實現(xiàn)。
(2) 單例對象如果持有Context,那么很容易引發(fā)內(nèi)存泄漏,此時需要注意傳遞給單例對象的Context最好是Application Context。
Unity單例模式例子
GameManager腳本
using System; using UnityEngine; using UnityEngine.UI;public class GameManager : MonoBehaviour {private static GameManager _ins;public static GameManager Ins { get { return _ins; } }public int value;private void Start(){if (!_ins){_ins = this;}} }其他腳本
using System; using UnityEngine; using UnityEngine.UI;public class Other : MonoBehaviour {private void Update(){GameManager.Ins.value++;//Anythings} }總結(jié)
以上是生活随笔為你收集整理的Unity单例模式+例子的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql 绕过select报错_MyS
- 下一篇: .net api 和java平台对接技术