我有一个通常只生成工厂对象的类,但是这个类应该只在整个程序中使用一次指定位置。在这种情况下使用的最佳设计模式是什么?
我认为有一个修改过的单例设计只允许在整个程序中引用一个实例,这是正确的方法。因此,只有第一次调用getInstance()才会返回工厂库。
这是一个好主意还是坏主意?我是否错过了解决这个问题的另一种有趣的设计模式?
感谢您的帮助。
答案 0 :(得分:2)
不是添加最终的静态字段= new SingletonClass()并使ctor变为私有,为什么不将它作为参数传递给需要复制的所有东西时自己控制创建。这是依赖注入的整个点,类不需要调用静态字段来获取单例,而是接收它们作为ctor或setter中的参数所需的实例。
答案 1 :(得分:1)
然而,这个类应该只在整个程序中使用一次指定位置
我不认为制作单身会阻止某人在不止一个地方使用它,因为通常单身人士都是全球性的。
在你的情况下,我可能只是将类的内部工厂类放在需要使用它的类中。或者只是使用访问修饰符来确保它不被其他任何地方使用(包私有或受保护可能是你正在寻找的东西)。
答案 2 :(得分:1)
问题是 - 如果将来有人决定在课程的不同部分使用此课程,那该怎么办?
一个。那很好,让他们。它不会影响它的其他用途。 (不要使用单身人士。)
B中。如果它有充分的理由,那很好,但它会弄乱第一次使用它(由于共享资源或其他),所以他们必须使用在别处使用的相同实例。 (使用单身人士。)
你说它应该只在整个程序和一个特定的地方使用一次。如果由于技术限制而属实,请将其设为单身。如果这是真的,因为这是你对设计的看法,但没有技术理由来制定限制,那么就不要把它变成单身。
答案 3 :(得分:1)
我有一个通常只生成工厂对象的类,但是这个类应该只在整个程序中使用一次指定位置。在这种情况下使用的最佳设计模式是什么?
如果只能使用一次,则只调用一次。如果你希望强制它只能在代码中的那个地方调用,你可以通过使它成为包含调用的类的私有内部类来完全控制它。