标签: singleton

使用JUnit测试的不同Singleton实例

我有一个独立的单身人士,成功通过了测试.但是通过一组测试,这会失败,因为一旦定义了单例,它就不允许重置实例.

关于如何解决这个问题的任何想法?

junit singleton

23
推荐指数
2
解决办法
2万
查看次数

如何在Java中实现抽象的单例类?

这是我的示例抽象单例类:

public abstract class A {
    protected static A instance;
    public static A getInstance() {
        return instance;
    }
    //...rest of my abstract methods...
}
Run Code Online (Sandbox Code Playgroud)

以下是具体实施:

public class B extends A {
    private B() { }
    static {
        instance = new B();
    }
    //...implementations of my abstract methods...
}
Run Code Online (Sandbox Code Playgroud)

不幸的是我无法在B类中获取静态代码来执行,因此实例变量永远不会被设置.我试过这个:

Class c = B.class;
A.getInstance() - returns null;
Run Code Online (Sandbox Code Playgroud)

还有这个

ClassLoader.getSystemClassLoader().loadClass("B");
A.getInstance() - return null;
Run Code Online (Sandbox Code Playgroud)

在eclipse调试器中运行这两个,静态代码永远不会被执行.我可以找到执行静态代码的唯一方法是将B的构造函数的可访问性更改为public,并调用它.

我在Ubuntu 32bit上使用sun-java6-jre来运行这些测试.

java inheritance singleton abstract-class classloader

23
推荐指数
2
解决办法
4万
查看次数

使用枚举的单身人士

关于使用枚举创建单例类,我在stackoverflow上阅读了很多内容.我一定错过了什么,因为我无法到达任何地方的实习.

这是我的代码:

public class UserActivity {

    private DataSource _dataSource;
    private JdbcTemplate _jdbcTemplate;

    static enum Singleton {
        INSTANCE;

        private static final UserActivity singleton = new UserActivity();

        public UserActivity getSingleton() {
            return singleton;
        }
    }

    public UserActivity() {
        this._dataSource = MysqlDb.getInstance().getDataSource();
        this._jdbcTemplate = new JdbcTemplate(this._dataSource);
    }

    public void dostuff() {
     ...
    }
}
Run Code Online (Sandbox Code Playgroud)

在外面我想做

UserActivity.INSTANCE.getSingleton()
Run Code Online (Sandbox Code Playgroud)

要么

UserActivity.Singleton.
Run Code Online (Sandbox Code Playgroud)

但是eclipse的代码完成没有找到任何东西

谢谢!

java singleton enums

23
推荐指数
2
解决办法
2万
查看次数

C#Singleton,带有接受参数的构造函数

我想创建一个静态类或单例类,它接受在其构造函数中对另一个对象的引用.静态类已经出来了,但我想我可以创建一个在其构造函数中接受参数的单例.到目前为止,我没有任何运气搞清楚或谷歌搜索语法.这可能吗?如果是的话,我该怎么做?

对不起,在最初的帖子中没有任何例子,我匆匆写了.我觉得我的回答已经在回复中了,但这里有一些关于我想做的事情的澄清:

我想创建一个特定类型的单个实例(表示Singleton),但该类型的单个实例需要保存对不同对象的引用.

例如,我可能想要创建一个Singleton"Status"类,它拥有一个StringBuilder对象和一个Draw()方法,可以调用该方法将所述StringBuilder写入屏幕.Draw()方法需要知道我的GraphcisDevice才能绘制.所以我想这样做:

public class Status
{
private static Status _instance;
private StringBuilder _messages;
private GraphicsDevice _gDevice;

private Status(string message, GraphicsDevice device)
{
    _messages.Append(message);
    _gDevice = device;
}

// The following isn't thread-safe

// This constructor part is what I'm trying to figure out
public static Status Instance // (GraphicsDevice device) 
    {
    get
        {
        if (_instance == null)
            {
            _instance = new Status("Test Message!", device); 
            }
        return _instance;
        }
    }

public void UpdateMessage
...

public void Draw()
    {
    // …
Run Code Online (Sandbox Code Playgroud)

c# singleton constructor

22
推荐指数
2
解决办法
3万
查看次数

德尔福Singleton模式

我知道这在社区的各个地方都被讨论了很多次,但我在Delphi中找不到一个简单的单例模式实现.我在C#中有一个例子:

public sealed class Singleton {
  // Private Constructor
  Singleton( ) { }

  // Private object instantiated with private constructor
  static readonly Singleton instance = new Singleton( );

  // Public static property to get the object
  public static Singleton UniqueInstance {
    get { return instance;}
}
Run Code Online (Sandbox Code Playgroud)

我知道在Delphi中没有像这样优雅的解决方案,我看到很多关于无法在Delphi中正确隐藏构造函数的讨论(使其成为私有),因此我们需要覆盖NewInstance和FreeInstrance方法.我相信这是我在http://ibeblog.com/?p=65上找到的实现:

type
TTestClass = class
private
  class var FInstance: TTestClass;
public                              
  class function GetInstance: TTestClass;
  class destructor DestroyClass;
end;

{ TTestClass }
class destructor TTestClass.DestroyClass;
begin
  if Assigned(FInstance) then
  FInstance.Free;
end;

class …
Run Code Online (Sandbox Code Playgroud)

delphi singleton design-patterns

22
推荐指数
4
解决办法
2万
查看次数

Java中的单例和多线程

在多线程环境中使用Singleton类的首选方法是什么?

假设我有3个线程,并且所有线程都试图同时访问getInstance()singleton类的方法 -

  1. 如果不保持同步会发生什么?
  2. 在内部使用synchronized getInstance()方法或使用synchronized块是好的做法getInstance().

请告知是否还有其他方法.

java singleton multithreading design-patterns

22
推荐指数
3
解决办法
3万
查看次数

单线程与多线程

在一次采访中询问了这个问题.第一部分是编写单例类:

class Singleton
{
    static Singleton *singletonInstance;
    Singleton() {}

  public:
    static Singleton* getSingletonInstance()
    {
        if(singletonInstance == null)
        {
            singletonInstance = new Singleton();
        }
        return singletonInstance;
    }
};
Run Code Online (Sandbox Code Playgroud)

然后我被问到如何getSingletonInstance()在多线程情况下处理这个问题.我不太确定,但我修改为:

class Singleton 
{
    static Singleton *singletonInstance;
    Singleton() {}
    static mutex m_;

  public:
    static Singleton* getSingletonInstance()
    {
        m_pend();
        if(singletonInstance == null)
        {
            singletonInstance = new Singleton();
        }
        return singletonInstance;
    }

    static void releaseSingleton()
    {
        m_post();
    }
};
Run Code Online (Sandbox Code Playgroud)

然后有人告诉我,虽然需要一个互斥锁,但挂起和发布互斥锁效率不高,因为需要时间.并且有一种更好的方法来应对这种情况.

有没有人知道在多线程情况下处理单例类的更好,更有效的方法?

c++ singleton multithreading synchronization mutex

22
推荐指数
2
解决办法
2万
查看次数

Spring单例和Java singeleton(设计模式)有什么区别?

我正在学习Spring框架,目前正在阅读一本关于它的书.在本书中,它说Spring单例与Java单例不同?这意味着什么,有什么区别?谢谢

java singleton spring dependency-injection

22
推荐指数
1
解决办法
3万
查看次数

单例模式:使用枚举版本

我不明白如何实现模式的Enum版本Singleton.下面是使用Singleton模式实现"传统"方法的示例.我想将其更改为使用Enum版本,但我不确定如何.

public class WirelessSensorFactory implements ISensorFactory{

    private static WirelessSensorFactory wirelessSensorFactory;

    //Private Const
    private WirelessSensorFactory(){
        System.out.println("WIRELESS SENSOR FACTORY");
    }

    public static WirelessSensorFactory getWirelessFactory(){

        if(wirelessSensorFactory==null){
            wirelessSensorFactory= new WirelessSensorFactory();
        }

        return wirelessSensorFactory;
    }

}
Run Code Online (Sandbox Code Playgroud)

java singleton enums design-patterns

22
推荐指数
3
解决办法
3万
查看次数

WCF服务通常是单身还是不单身?

我相信吉米尼尔森说他一般都是自己的网络服务单身人士.这是首选方法,还是使用WCF?除了使服务方法保持静态之外,还有什么要做的吗?

wcf singleton

21
推荐指数
3
解决办法
1万
查看次数