簡體   English   中英

smalltalk singleton模式:如何初始化實例變量?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM