sro*_*uez 3 c# singleton default-constructor
我正在为我的一个项目实现一个通知框架.由于我希望它非常通用,用户可以使用多个传输层,因此他并不需要关心使用一种传递方法(比如说WCF)或另一种传递方法(例如ActiveMQ).用户可以访问的界面当然与传递方法(WCF或ActiveMQ)无关.尽管如此,这两个类(消费者和生产者)实现了单例,因此它们实际上使用默认构造函数(意思是没有参数).我的问题是,我想有一个参数,用户想要使用的交付方法.但据我所知,单身人士只使用默认构造函数?这是正常的,因为没有必要使用带参数的单例.那么,我的选择是什么?不要创建一个单身人士?创建一个设置交付方式的方法?
塞巴斯蒂安
你当然可以使用单例参数,除了不将参数传递给构造函数,你将它传递给getInstance()方法.您的被覆盖的构造函数当然需要是私有的,才能实现真正的单例实现.我的例子是用Java编写的,但也适用于C#.
例:
Singleton s = Singleton.getInstance(42);
Run Code Online (Sandbox Code Playgroud)
在Singleton代码中:
private Singleton() {
}
private Singleton(int num) {
//set num
}
public getInstance(int num) {
//singleton code (calls the private non-default constructor if an object
//does not already exist)
}
Run Code Online (Sandbox Code Playgroud)