單例模式的優點:
1.乙個靜態例項,把共享的屬性方法能在任何乙個程式集呼叫,資訊有效的實現操作。(資料以乙個靜態例項的模式貫通全域性)
2.有效降低大模組之間的耦合度。
(注意:缺點就是耗費記憶體資源。單例不能濫用)
(注意:單例模式,顧名思義。只有乙個例項的設計模式。)
單利模式的由來:
我們只要仔細地想想看,全域性變數確實可以提供乙個全域性訪問點,但是它不能防止別人例項化多個物件。通過外部程式來控制的物件的產生的個數,勢必會系統的增加管理成本,增大模組之間的耦合度。所以,最好的解決辦法就是讓類自己負責儲存它的唯一例項,並且讓這個類保證不會產生第二個例項,同時提供乙個讓外部物件訪問該例項的方法。自己的事情自己辦,而不是由別人代辦,這非常符合物件導向的封裝原則。
通用類寫法:(提供三種常用的)
1.類只有乙個例項
packagepublic function set name(value:string):void
public function single()
}public static function getinstance():single
}}
2.類可以有多個例項,內部例項能貫通全域性
packagepublic function set name(value:string):void
public function single()
public static function getinstance():single
return instance;}}
}
3.只有乙個例項,用內部類實現只能例項化一次,外部不能訪問該內部類自然就例項化不了
packagepublic function set name(value:string):void
public function single(content:consingle)
public static function getinstance():single
return instance;}}
}
在使用單利模式的時候,請注意一點。
不要在單例裡面直接寫屬性(如:public var name:string)當必須寫屬性的時候用靜態屬性(public static var name:string),一般單例模式上面使用的是方法。(getinstance().getname()); 如:
private var _name:string;public function get name():string
public function set name(value:string):void
一般學過彙編的同學應該了解:當訪問乙個物件屬性的時候,是先指向該物件模組位址,然後找到位址盒子,然後再找到記憶體的再進行使用。如果使用方法的情況下按照這個走,所以呼叫方法是事半功倍。而使用單例模式直接寫public var name直接呼叫的情況下走的也是方法走的模式,那樣路就走遠了。而public static var name:string就可以減少走的路,直接找到記憶體位址就可以使用。(一般人不注意這些。養成習慣吧。)
as3中單例模式的實現方法
今天在學習puremvc的時候發現了實現單例模式的另一種方法。如下 public class model public static function getinstance model private static var instance model private const singleto...
單例模式 單例模式
餓漢式 急切例項化 public class eagersingleton 2.宣告靜態成員變數並賦初始值 類初始化的時候靜態變數就被載入,因此叫做餓漢式 public static eagersingleton eagersingleton new eagersingleton 3.對外暴露公共的...
設計模式筆記 3 單例模式
單例類只能有乙個例項 單例類必須自己建立自己的唯一例項 單例類必須提供給所有其他物件這個例項 單例類有私有的構造方法和本身的乙個靜態例項物件 單例類向外界提供乙個可訪問的靜態方法,供外界獲取它的靜態例項。目的 保證乙個類有且僅返回這乙個例項物件。public class singleobject p...