我对编程中的设计模式相当陌生,我正试图通过创建食谱和一顿饭来学习它们。食谱可以很多,但只有一餐。
使用生成器:
创建一个Recipe,它将包含名称、成分等。
使用Singleton:
实例化我的CurrentMeal,它应该包含一个ArrayList<Recipe>。我还应该能够在我的CurrentMeal中访问Recipe。
虽然我相信我理解Builder,但我不确定我对Singleton的理解有多深。我是否以适当的方式处理这个问题?如果没有,任何关于采取的方法的建议都将不胜感激。提前谢谢。
发布于 2016-07-02 02:27:16
builder模式:
意图:
将复杂对象的构造与其表示分离,以便相同的构造过程可以创建不同的表示。
要点:
Builder pattern builds a complex object using simple objects and using a step by step approachThis builder is independent of other objectsReplacement to Factory method/Abstract Factory in this scenario:从客户端程序传递到工厂类的参数太多,这很容易出错UML图:

生成器:
用于创建对象(产品)的抽象接口。
ConcreteBuilder:
提供Builder的实现。它是一个能够构造其他对象的对象。构造和组装部件以构建对象
Java中生成器设计模式的指南
类内部的
Make a static nested class called Builder,其对象将由BuilderBuilder class will have exactly same set of fields构建为原始classBuilder class will expose method for adding ingredients.每个方法都将返回相同的Builder对象。构建器将通过每个方法call.Builder.build() method will copy all builder field values into actual class and return object of Item classshould have private constructor to create its object from build() method and prevent outsider to access its constructor.来丰富
有关更多详细信息,请参阅这篇journaldev文章。
Singleton模式:
意图:
在以下场景中应考虑singleton:
无法合理确定单个实例的
提供访问权限,则无法进行assigned
UML图:

有关更多详细信息,请查看以下SE问题:
What is an efficient way to implement a singleton pattern in Java?
发布于 2015-02-05 00:39:47
单例模式允许您共享对象的单个实例。如果您想要共享您的CurrentMeal属性,那么您当然可以将其封装在单例中,尽管我并不真正明白这一点。这并不是设计模式的真正目的。例如,您可以使用Singleton来实现日志记录机制。
Builder模式非常适合您的应用程序,因为它允许基于相似的属性构造不同的配方实现。
https://stackoverflow.com/questions/23144203
复制相似问题