首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java设计模式- Builder和Singleton

Java设计模式- Builder和Singleton
EN

Stack Overflow用户
提问于 2014-04-18 06:00:33
回答 2查看 796关注 0票数 3

我对编程中的设计模式相当陌生,我正试图通过创建食谱和一顿饭来学习它们。食谱可以很多,但只有一餐。

使用生成器:

创建一个Recipe,它将包含名称、成分等。

使用Singleton:

实例化我的CurrentMeal,它应该包含一个ArrayList<Recipe>。我还应该能够在我的CurrentMeal中访问Recipe

虽然我相信我理解Builder,但我不确定我对Singleton的理解有多深。我是否以适当的方式处理这个问题?如果没有,任何关于采取的方法的建议都将不胜感激。提前谢谢。

EN

回答 2

Stack Overflow用户

发布于 2016-07-02 02:27:16

builder模式:

意图:

将复杂对象的构造与其表示分离,以便相同的构造过程可以创建不同的表示。

要点:

  1. Builder pattern builds a complex object using simple objects and using a step by step approach
  2. A生成器类逐步构建最终的对象。This builder is independent of other objects
  3. Replacement to Factory method/Abstract Factory in this scenario:从客户端程序传递到工厂类的参数太多,这很容易出错
  4. 某些参数可能是可选的,而不像工厂中强制发送所有参数

UML图:

生成器:

用于创建对象(产品)的抽象接口。

ConcreteBuilder:

提供Builder的实现。它是一个能够构造其他对象的对象。构造和组装部件以构建对象

Java中生成器设计模式的指南

类内部的

  1. Make a static nested class called Builder,其对象将由Builder
  2. Builder class will have exactly same set of fields构建为原始class
  3. Builder class will expose method for adding ingredients.每个方法都将返回相同的Builder对象。构建器将通过每个方法call.
  4. Builder.build() method will copy all builder field values into actual class and return object of Item class
  5. Item类(我们为其创建构建器的类) should have private constructor to create its object from build() method and prevent outsider to access its constructor.

来丰富

有关更多详细信息,请参阅这篇journaldev文章。

Singleton模式:

意图:

  1. 确保一个类只有一个实例,并提供一个全局访问点来访问it.
  2. Encapsulated“即时初始化”或“首次使用时初始化”

在以下场景中应考虑singleton

无法合理确定单个实例的

  1. 所有权。如果未以其他方式为

提供访问权限,则无法进行assigned

  • Lazy初始化

UML图:

有关更多详细信息,请查看以下SE问题:

What is an efficient way to implement a singleton pattern in Java?

票数 1
EN

Stack Overflow用户

发布于 2015-02-05 00:39:47

单例模式允许您共享对象的单个实例。如果您想要共享您的CurrentMeal属性,那么您当然可以将其封装在单例中,尽管我并不真正明白这一点。这并不是设计模式的真正目的。例如,您可以使用Singleton来实现日志记录机制。

Builder模式非常适合您的应用程序,因为它允许基于相似的属性构造不同的配方实现。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23144203

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档