标签: singleton

在实际应用中使用Singleton Pattern的确切位置是什么?

我只是好奇使用单身模式...我知道模式是如何工作的以及它可以在哪里使用但我个人从未在任何实际应用中使用过.有人可以给出一个可以使用它的例子.如果有人可以解释它们在实际应用中的使用方式和位置,我真的很感激.谢谢,斯瓦蒂

java singleton

42
推荐指数
4
解决办法
6万
查看次数

Java最佳实践:仅使用静态方法的类

我有一个应用程序,我有一个名为的类PlausibilityChecker.这个类只有静态方法,比如checkZipcodeFormatcheckMailFormat.我在GUI类中使用它们来检查输入,然后再将它发送到较低层.

这是好习惯吗?我以为我只使用静态方法,所以我不必关心将实例传递给GUI类或者在每个gui类中都有一个不引用gui对象的实例字段.

我注意到这个FilesJava NIO只有静态方法所以我认为这不是那么可怕的错误.

java singleton static nio

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

春季默认范围是单身吗?

你能否解释为什么Spring为下面显示的bean配置创建两个对象,因为默认情况下spring默认范围是singleton?

Spring配置在这里:

<bean id="customer" class="jp.ne.goo.beans.Customer"> 
    <property name="custno" value="100"></property>
    <property name="custName" value="rajasekhar"> </property>
</bean>
<bean id="customer2" class="jp.ne.goo.beans.Customer"> 
    <property name="custno" value="200"></property> 
    <property name="custName" value="siva"></property> 
</bean>
Run Code Online (Sandbox Code Playgroud)

java singleton spring dependency-injection spring-ioc

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

获取对UIApplication委托的引用

我正在编写我的第一个iPhone应用程序而且我无法切换视图.我有2个视图和每个(在AppDelegate一个实例中UIApplicationDelegate)的引用.我创建了两个实例applicationDidFinishLaunching并立即显示第一个视图.这很好用.

问题是在AppDelegate中引用另一个视图,我无法弄清楚如何获取它的引用,所以我可以切换到另一个视图.有没有办法获得对主要UIApplicationUIApplicationDelegate对象的引用?

iphone singleton delegates objective-c uiapplication

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

40
推荐指数
6
解决办法
8万
查看次数

序列化静态类?

如果我们序列化静态类会发生什么?如果我们序列化它,可以创建多个静态类的实例吗?

[Serializable]
public static class MyClass
{
    public static MyClass()
    {

    }

    public static bool IsTrue()
    {
       return true;
    }
}
Run Code Online (Sandbox Code Playgroud)

假设我将对象XmlSerialize为XML文件,稍后我反序列化回一个对象.另一个副本存在于内存中(当somone第一次直观地表达静态calss时创建).请问,有两个副本的对象?如果是的话,我们可以阻止吗?它是否适用于遵循单例模式的任何类?

c# singleton serialization

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

Java双重检查锁定

我碰巧发表了一篇文章,最近讨论了Java中的双重检查锁定模式及其陷阱,现在我想知道我多年来一直使用的那种模式的变体是否会受到任何问题的影响.

我已经查看了很多关于这个主题的帖子和文章,并了解了获取对部分构造对象的引用的潜在问题,据我所知,我认为我的实现不受这些问题的影响.以下模式是否有任何问题?

而且,如果没有,为什么人们不使用它?我在这个问题的任何讨论中都没有看过它.

public class Test {
    private static Test instance;
    private static boolean initialized = false;

    public static Test getInstance() {
        if (!initialized) {
            synchronized (Test.class) {
                if (!initialized) {
                    instance = new Test();
                    initialized = true;
                }
            }
        }
        return instance;
    }
}
Run Code Online (Sandbox Code Playgroud)

java singleton multithreading synchronization double-checked-locking

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

为什么使用单例而不是静态类?

单身实际上何时比静态类更容易或更好?在我看来,创建单身只是额外的努力,实际上并不需要,但我确信有一个很好的理由.否则,显然不会使用它们.

singleton static design-patterns class

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

如何在没有Singleton的情况下实现方便的日志记录?

我目前的实施,简化:

#include <string>
#include <memory>

class Log
{
  public:
    ~Log() {
      // closing file-descriptors, etc...
    }
    static void LogMsg( const std::string& msg )
    {
      static std::unique_ptr<Log> g_singleton;
      if ( !g_singleton.get() )
        g_singleton.reset( new Log );
      g_singleton->logMsg( msg );
    }
  private:
    Log() { }
    void logMsg( const std::string& msg ) {
      // do work
    }
};
Run Code Online (Sandbox Code Playgroud)

总的来说,我对此实现感到满意,因为:

  • 懒惰的实例化意味着我不付钱,除非我使用它
  • 使用unique_ptr意味着自动清理,因此valgrind很高兴
  • 相对简单,易于理解的实施

但是,负面因素是:

  • 单身人士不利于单元测试
  • 在我的脑海中引入一种伪全局(一点代码气味)的不和谐

所以这里是我的问题针对那些成功从他们的C++代码中驱逐所有单例的开发人员:

  • 您在应用程序范围的日志记录中使用什么类型的非Singleton实现?
  • 接口是否像上面的Log :: LogMsg()调用一样简单易用?

我想避免在我的代码中传递一个Log实例,如果可能的话 - 注意:我问,因为,如果有一个好的,合理的选择,我也想从我的代码中驱除所有Singletons.

c++ singleton c++11

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

在伴侣对象在类中时使用.tupled方法

我正在从Slick迁移到Slick 2,在Slick 2中你想tupled在投影到案例类时使用该方法(如http://slick.typesafe.com/doc/2.0.0-所示)RC1/migration.html)

问题是当case类有一个伴随对象时,即如果你有这样的东西

case class Person(firstName:String,lastName:String) {

}
Run Code Online (Sandbox Code Playgroud)

与伴侣对象一起

object Person {
  def something = "rawr"
}
Run Code Online (Sandbox Code Playgroud)

在相同的范围内,该tupled方法不再有效,因为它试图运行tupledobject,而不是,case class.

有没有一种方法来检索case classPerson,而不是object,所以你可以调用tupled正确?

singleton scala case-class slick

39
推荐指数
3
解决办法
8478
查看次数