相关疑难解决方法(0)

如何在PHP中获取特定类的实例?

我需要检查是否存在实例class_A,如果确实存在,则获取该实例.

如何用PHP做到这一点?

一如既往,我认为一个简单的例子是最好的.

现在我的问题变成:

$ins = new class_A();
Run Code Online (Sandbox Code Playgroud)

如何在实例class_A化时将实例存储在静态成员变量中?

如果在调用时可以存储实例会更好__construct().比如,它应该不受限制地实现它的实现方式.

php class instance

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

单身人士的替代品

这与以下内容有关:单身人士有什么不好

你能给我一些例子,说明可以使用其他技术避免单身人士吗?我需要在C++中使用它,因此您可以使用C++特定技术提供示例.

更清楚:如何在没有单例的情况下实现文件管理器,资源管理器,日志管理器等.

c++ design-patterns c++11

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

做全局变量的正确"C++方式"是什么?

我有一个主应用程序类,其中包含一个记录器,以及一些常规应用程序配置等.

现在我将显示许多GUI窗口等(将使用记录器和配置),我不想将记录器和配置传递给每个构造函数.

我已经看到了一些变体,比如在任何地方声明主类extern,但这并不是非常面向对象的.什么是使主类中的元素可供所有(或大多数)其他类访问的"标准"C++方法?

c++ oop design-patterns

12
推荐指数
3
解决办法
4302
查看次数

具有内部类的Java Singleton - 什么保证线程安全?

一个共同的(1,2)实现单的方式是使用具有静态构件的内部类:

public class Singleton  {    
    private static class SingletonHolder {    
        public static final Singleton instance = new Singleton();
    }    

    public static Singleton getInstance() {    
        return SingletonHolder.instance;    
    }

    private Singleton() {
        //...
    }
}
Run Code Online (Sandbox Code Playgroud)

据说这个实现是懒惰的初始化和线程安全的.但究竟是什么保证了它的线程安全?处理 线程和锁定的JLS 17没有提到静态字段具有任何类型的先发生关系.我怎样才能确定初始化只发生一次并且所有线程都看到同一个实例?

java multithreading

12
推荐指数
2
解决办法
1061
查看次数

C++中静态和全局的替代方案?

我有一个类实例需要由其他一些类访问.

  • 将实例始终传递到构造链中会非常麻烦.
  • 我试图避免全局变量,因为人们倾向于反对这一点.
  • 我以为我声明这个实例是一个类的静态成员,然后包含这个类,以便访问该实例,但这不起作用

error: calling a private constructor of class 'Foo'

要在QGraphicsView框架的上下文中进一步指定问题:我想添加QGraphicsItems,它由控制器类(管理项目)实例化到QGraphicsScene,这是(但我不坚持这个细节)我的成员QMainWindow类.

我花了相当多的时间在互联网上搜索,但我相当新,我有点被困在这里.对于解决困境的最佳方法,我表示赞赏.

c++ static global qgraphicsitem qgraphicsscene

11
推荐指数
1
解决办法
1823
查看次数

我是否可以在使用C++构建静态本地时访问它?

保证在C++标准首次使用时实例化静态本地.但是,我想知道如果我在构建时访问静态本地对象会发生什么.我认为这是UB.但在以下情况下避免这种情况的最佳做法是什么?

一个问题的情况

Meyers Singleton模式在静态getInstance()方法中使用静态局部来在第一次使用时构造对象.现在,如果构造函数(直接或indireclty)getInstance()再次调用,我们将面临静态初始化尚未完成的情况.这是一个最小的例子,它说明了问题情况:

class StaticLocal {
private:
    StaticLocal() {
        // Indirectly calls getInstance()
        parseConfig();
    }
    StaticLocal(const StaticLocal&) = delete;
    StaticLocal &operator=(const StaticLocal &) = delete;

    void parseConfig() {
        int d = StaticLocal::getInstance()->getData();
    }
    int getData() {
        return 1;
    }

public:
    static StaticLocal *getInstance() {
        static StaticLocal inst_;
        return &inst_;
    }

    void doIt() {};
};

int main()
{
    StaticLocal::getInstance()->doIt();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

在VS2010中,这没有问题,但VS2015死锁.

对于这种简单,减少的情况,显而易见的解决方案是直接呼叫getData(),而无需getInstance()再次呼叫.但是,在更复杂的情况下(根据我的实际情况),这种解决方案是不可行的.

尝试解决方案

如果我们改变getInstance()方法来处理像这样的静态局部指针(从而放弃Meyers Singleton模式):

static StaticLocal …
Run Code Online (Sandbox Code Playgroud)

c++ static-initialization visual-studio-2015

11
推荐指数
3
解决办法
871
查看次数

单身人士有哪些特定的合法用途?

可能重复:
在设计模式上:何时使用Singleton?

这个问题不是关于单身人士是否"被视为有害".我只是想知道,从你的经验,都有些什么具体情况,其中单身似乎运作良好.

编辑: 请,如果你想讨论单身的恰当性和/或邪恶一般,有已位于exising问题:137975,11831

哎呀!我刚刚发现我的问题已在这里被问到:关于设计模式:何时使用Singleton?

singleton design-patterns anti-patterns

10
推荐指数
2
解决办法
1199
查看次数

在不使用Singleton的情况下从非bean对象获取Spring Application上下文

我需要从非bean对象获取spring应用程序上下文.在SO中的另一个线程中,接受的答案建议使用单例来获取应用程序上下文. 获取Spring应用程序上下文

但是使用单例使得我的代码更加耦合并且不太可测试,许多线程中讨论的常见问题(例如单身人士的坏事)

问题是,有一种优雅的方法从非bean对象获取应用程序上下文而不使用单例吗?

singleton spring design-patterns

9
推荐指数
2
解决办法
9653
查看次数

单身或不单身

我有一个运行的Windows服务.在这个服务中,我托管了一些服务(WCF).我需要一些"内存数据持有者"类.只要Windows服务正在运行,此类的目的是保存不持久的数据.必须可以通过WCF服务访问此类.他们在这个类中放了一些值或从这个类中检索一些值.

我想到的第一件事就是单身人士课程.我认为这种模式非常适合这种情况.但后来我读到一些帖子说单身人士班级实际上并不好.

那么这种情况还有其他选择吗?或者这是单身吗?Factory方法怎么样?但那我在哪里可以找到对象的参考?

.net singleton design-patterns windows-services

9
推荐指数
2
解决办法
2643
查看次数

如何使用代理模式来替换单例?

这是对单身人士如此糟糕的一些评论的回应

有人建议可以使用代理模式代替单例来缓存DB数据.但我看不出优势,事实上单身人士似乎更"可控".

让我详细说明这个问题.假设你有一个数据库,有大量的数据,从不改变,所以它可以被认为是只读的,为什么代理模式比单例更好地建模这个数据缓存呢?

(PS:如果你要说"因为它更''可测试'!" - 请详细说明,我仍然习惯这些概念)

谢谢你的帮助!

singleton design-patterns

9
推荐指数
1
解决办法
5537
查看次数