我对编程中的Design Patterns相当新,我正在尝试通过创建食谱和一餐来学习它们。可以有很多食谱,但只有一餐。
使用Builder:
创建一个Recipe
,其中包含名称,成分等。
使用Singleton:
实例化我的CurrentMeal
,其中应包含ArrayList<Recipe>
。我也应该可以访问Recipe
内的CurrentMeal
。
虽然我相信我理解Builder
,但我不确定我是否理解Singleton
。我是否以适当的方式处理这个问题?如果没有,我们将非常感谢任何有关采取措施的建议。提前谢谢。
答案 0 :(得分:1)
builder模式:
意图:
将复杂对象的构造与其表示分开,以便相同的构造过程可以创建不同的表示。
关键点:
Builder pattern builds a complex object using simple objects and using a step by step approach
This builder is independent of other objects
Replacement to Factory method/Abstract Factory in this scenario
:从客户端程序传递到可能容易出错的Factory类的参数太多UML图:
<强>生成器:强>
用于创建对象(产品)的抽象接口。
<强> ConcreteBuilder:强>
为Builder
提供实施。它是一个能够构造其他对象的对象。构造和组装部件以构建对象
Java中的Builder设计模式指南
Make a static nested class called Builder
在类中,其对象将由Builder构建Builder class will have exactly same set of fields
作为原始课程Builder class will expose method for adding ingredients
。每个方法都将返回相同的Builder对象。每次方法调用都会丰富Builder。Builder.build() method will copy all builder field values into actual class and return object of Item class
should have private constructor to create its object from build() method and prevent outsider to access its constructor.
有关详细信息,请参阅此journaldev文章。
Singleton模式:
意图:
UML图:
有关详细信息,请查看以下SE问题:
What is an efficient way to implement a singleton pattern in Java?
答案 1 :(得分:0)
Singleton模式允许您共享对象的单个实例。如果你想分享你的CurrentMeal属性,那么你当然可以将它封装在Singleton中,尽管我没有看到这一点。它不是真正的模式设计。例如,您可以使用Singleton来实现日志记录机制。
Builder模式非常适合您的应用程序,因为它允许基于类似的属性构建不同的Recipe实现。