我有一个Listener
类来监听特定的 HTTP 端口。我制作了Listener
单例(因为总会有一个侦听器对象在特定端口上侦听)。为此,我制作了默认Listener()
构造函数private
。制作Listener
实例(在Listener
类内部)static
并让static Listener
构造函数初始化单例Listener
对象。也有static Listener getListener()
which 返回单例Listener
实例。
我在此端口上接收到一个 SOAP,我的侦听器回调方法正在处理该 SOAP。
现在我想将最后一次通知的日期时间推送到我的 UI。
所以我想的是,在初始化时Listener
我会传递一个委托,一个对它的引用将被存储在里面Listener
,然后每次我收到通知时,在监听器回调中我会调用那个委托并传递它当前时间(new DateTime()
),这会做随着时间的推移打印消息的必要任务。我还想过让委托参数可选,这样如果委托是null
它就不会在通知时被调用。但是,由于我将构造函数设为私有,因此我无法弄清楚如何将委托传递给它。
总结和概括整个问题:如何将参数(作为实例成员存储)传递给单例类?
我应该将委托传递给getListener()
吗?并在其中每次检查委托是否为空,如果不是,设置它?但是,如果我通过调用访问这个单例对象太多次Listener.getListener()
,每次它都会不必要地检查委托是null
。事实上,这就是为什么我将初始化转移Listener
到静态构造函数只是为了避免检查是否Listener
在每次getListener()
调用时都被初始化。
我应该怎么做才能将参数传递给单例类?或者这是getListener()
不可避免的检查?
注意:我不知道,但这个问题可能归结为我们如何将参数传递给静态构造函数,因为我们需要在第一次使用类时初始化事物,并且我们必须使用委托/其他编程构造来初始化它(因此我们不能从静态构造函数中的某个配置文件加载初始化参数)。