Tag: design patterns

将构建器保持在单独的类中(流畅的界面)

Foo foo = Foo.builder() .setColor(red) .setName(“Fred”) .setSize(42) .build(); 所以我知道在调用方法时有以下“Builder”解决方案用于创建命名参数。 虽然,这似乎只适用于内部静态类作为构建器,或者我错了吗? 我看了一些构建器模式的教程,但是对于我想要做的事情,它们看起来非常复杂。 有没有办法让Foo类和Builder类分开,同时享受上述代码等命名参数的好处? 以下是典型设置: public class Foo { public static class Builder { public Foo build() { return new Foo(this); } public Builder setSize(int size) { this.size = size; return this; } public Builder setColor(Color color) { this.color = color; return this; } public Builder setName(String […]

垃圾收集器何时擦除使用Singleton模式的对象的实例?

垃圾收集器何时擦除使用Singleton模式的对象的实例? 对象是否比常规对象更长时间? 如何在Java中手动强制删除/垃圾回收? 谢谢。

Java的枚举优于旧的“Typesafe Enum”模式?

在JDK1.5之前的Java中,“Typesafe Enum”模式是实现只能获取有限数量值的类型的常用方法: public class Suit { private final String name; public static final Suit CLUBS =new Suit(“clubs”); public static final Suit DIAMONDS =new Suit(“diamonds”); public static final Suit HEARTS =new Suit(“hearts”); public static final Suit SPADES =new Suit(“spades”); private Suit(String name){ this.name =name; } public String toString(){ return name; } } (参见例如Bloch的Effective Java的第21项)。 现在在JDK1.5 +中,“官方”方式显然是使用enum […]

对象的创建:构造函数或静态工厂方法

我正在阅读Effective Java ,我认为这些标准的一些东西都不是本书所建议的,例如对象的创建,我的印象是构造函数是最好的方法,书籍说我们应该使用静态工厂方法,我不能少一些优点和缺点,所以我问这个问题,这是使用它的好处。 优点: 静态工厂方法的一个优点是,与构造函数不同,它们具有名称。 静态工厂方法的第二个优点是,与构造函数不同,它们不需要在每次调用时创建新对象。 静态工厂方法的第三个优点是,与构造函数不同,它们可以返回其返回类型的任何子类型的对象。 静态工厂方法的第四个优点是它们减少了创建参数化类型实例的详细程度。 缺点: 仅提供静态工厂方法的主要缺点是没有公共或受保护构造函数的类不能被子类化。 静态工厂方法的第二个缺点是它们不容易与其他静态方法区分开。 参考:Effective Java,Joshua Bloch,第2版,第5-10页 我无法理解第四个优势和第二个缺点,如果有人能解释这些要点,我将不胜感激。 我还想了解如何决定是否使用构造函数或静态工厂方法来创建对象。

使用Command Design模式

任何人都可以用命令模式的简单例子来解释。 我在互联网上提到但我感到困惑。

JPA和Hibernate中N + 1问题的解决方案是什么?

我知道N + 1问题是执行一个查询以获取N个记录和N个查询以获取一些关系记录。 但是如何在Hibernate中避免它呢?