[英]smalltalk singleton pattern: how do I initialize the instance variables?
我在使用singleton模式初始化smalltalk中的實例變量時遇到了麻煩。 (這里是另一個實現的鏈接以便澄清)
這就是我所擁有的:
new
^UniqueInstance ifNil: [UniqueInstance := self basicNew.
UniqueInstance: instanceVar := Object new. ].
最后一行(UniqueInstance:instanceVar:= Object new。)不起作用,但基本上我需要做的是:在將UniqueInstance返回給調用者之前,將instanceVar實例化為Object。
請注意,此“new”方法用作類實例化,並且該庫是UniqueIsntance的實例變量(所需類的isntance)。
誰能指出我正確的方向?
嘗試更簡單:
YourClass class>>singleton
UniqueInstance ifNil: [UniqueInstance := self basicNew initialize].
^UniqueInstance
然后在類的實例端實現適當的#initialize方法,例如:
YourClass>>initialize
someInstvar := someInitalValue.
^self
更新::訪問單例的類方法的名稱各不相同,可以是#default,#current或#singleton。 我以后大多使用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.