我在java中编写代码并使用这些模式。任何人都可以给我一个工厂摘要也使用单例的例子吗?你如何将抽象工厂与单体模式相结合?
回答
工厂模式是用于创建对象的创建模式。 Singleton确保每个JVM只有一个类的实例可用。结合这两种模式将涉及使用AbstractFactory创建一个单例实例,这意味着Factory将返回相同的实例。其他答案都提供了代码
下面是一个类实现单例模式的示例。这个实现也是线程安全。它使用双选锁定以便只在需要时进行同步。
public class Singleton {
private volatile static Singleton instance; // Note volatile keyword.
private Singleton() {}
public static Singleton getInstance() {
if (instance == null) {
synchronized (Singleton.class) {
if (instance == null) {
instance = new Singleton();
}
}
}
return instance;
}
}
您可以添加任何(工厂)方法作为类Singleton
的成员。这些方法将在您获得唯一实例时可用。
public class Singleton {
/* ... */
/* Singleton implementation */
/* ... */
public MyObject createMyObject() { // Factory method.
return new MyObject();
}
// ...
}
请注意,此方法的工作需要关键字“volatile”。如果可能,建议静态初始化变量以确保线程安全并且只有一个副本。私人静态最终单身实例=新单身人士()例如 – JustinKSU
@JustinKSU如果知道应用程序将始终创建单身实例,那么你可以静态初始化'实例'。在我的例子中,实例只会在需要时创建(懒惰创建)。这可以节省一些不必要的创建开销。 – Snps
同意。但是,通常我会在不需要时看到延迟初始化的开销。直到引用类时才会创建单个类,这通常是您希望变量初始化的时间。我的评论的主要观点是呼唤“易变”这个词。很多时候,我看到没有关键字的“双重检查锁定”。 – JustinKSU
- 1. 结合泛型MVP模式与抽象工厂模式
- 2. 工厂模式抽象工厂模式
- 3. 工厂和抽象工厂模式
- 4. 抽象工厂模式
- 5. 抽象工厂模式
- 6. 抽象工厂模式
- 7. 如何应用抽象工厂模式?
- 8. 与抽象工厂模式澄清后
- 9. 了解抽象工厂设计模式中的抽象工厂设计模式
- 10. 何时使用抽象工厂模式?
- 11. 抽象工厂和单体模式在一起
- 12. OOD:将工厂模式与策略模式结合使用
- 13. 模板抽象工厂类与池
- 14. 关于抽象工厂模式的undrestanding
- 15. 抽象工厂设计模式c#
- 16. 抽象工厂模式和HikariCP
- 17. PHP抽象工厂模式实现
- 18. MVC 3和抽象工厂模式
- 19. 抽象工厂设计模式 - C#
- 20. 设计模式 - 抽象工厂 - BombedMazeFactory
- 21. 工厂方法中的继承模式与抽象工厂模式中的组合
- 22. 抽象工厂
- 23. 抽象工厂模式 - 混凝土工厂
- 24. DbProviderFactory ADO.Net中的抽象工厂和工厂模式?
- 25. 这是抽象工厂模式的合法使用吗?
- 26. 在PHP5中与工厂模式结合的单身人士
- 27. 如何将其转换为工厂/抽象工厂?
- 28. 在单元测试中使用工厂/抽象工厂设计模式
- 29. 抽象工厂模式和工厂在产品中的多级工厂
- 30. 模型对象内的抽象工厂?
工厂在帮助避免单身感染方面更有用吗? – cHao