相关疑难解决方法(0)

Java核心库中的GoF设计模式示例

我正在学习GoF Java设计模式,我想看看它们的一些真实例子.Java核心库中这些设计模式的一些很好的例子是什么?

java oop design-patterns java-api

672
推荐指数
7
解决办法
49万
查看次数

什么是修订后的构建模式?

GoF的原始Builder模式与Joshua Bloch的"修订后的GoF Builder模式"有什么区别?

java design-patterns

16
推荐指数
2
解决办法
3000
查看次数

生成器模式和持久性

我将Builder模式用于我项目的几个类(多个参数,一些是强制的,一些是可选的,等等).这些类是不可变的(没有setter,集合getter的深层副本).

我现在尝试使用持久性框架将这些对象存储在数据库中,该框架使用默认构造函数+ setter构造对象.它不太喜欢我的建设者!

我不想将这种设置降级为POJO并失去当前设计的优点(灵活性,不变性,构造安全性).

我欢迎任何关于可以在这种情况下使用的变通方法的反馈(我可以包装这些类中的每一个,但这会使类的数量增加一倍,我宁愿避免这种情况).

一篇文章实际上指出这是Builder模式的一个特定缺点.

编辑

一个答案建议使用私有构造函数/ setter,但只有在类的字段不是final时才有效,这不是我的情况.

最终编辑

谢谢大家.
我认为我的最终解决方案看起来像这样并且工作正常(为了记录,我正在使用MongoDB + Morphia):

class AClass {
    private final String aField;
    private final AClass() {
        aField = "";
    }
    //Standard builder pattern after that - no setters (private or public)
}
Run Code Online (Sandbox Code Playgroud)

java persistence design-patterns

8
推荐指数
1
解决办法
1646
查看次数

标签 统计

design-patterns ×3

java ×3

java-api ×1

oop ×1

persistence ×1