- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我已经使用 Joshua Bloch 的 Builder 模式编写了一个类,类似于这个 Pizza 示例:
public class Pizza {
private int size;
private boolean cheese;
private boolean pepperoni;
private boolean bacon;
public static class Builder {
//required
private final int size;
//optional
private boolean cheese = false;
private boolean pepperoni = false;
private boolean bacon = false;
public Builder(int size) {
this.size = size;
}
public Builder cheese(boolean value) {
cheese = value;
return this;
}
public Builder pepperoni(boolean value) {
pepperoni = value;
return this;
}
public Builder bacon(boolean value) {
bacon = value;
return this;
}
public Pizza build() {
return new Pizza(this);
}
}
private Pizza(Builder builder) {
size = builder.size;
cheese = builder.cheese;
pepperoni = builder.pepperoni;
bacon = builder.bacon;
}
}
但是 PMD 报告了 2 个警告:
我应该忽略这些警告吗?
另一个问题:类Pizza
和Builder
中的私有(private)字段是重复的。当私有(private)字段的数量越来越大时,这会很烦人。有什么办法可以避免吗?
最佳答案
关于如何去除重复。
我会得到更多的反对票 :) 但也许是这样的?
class Pizza {
private int size;
private boolean cheese;
private boolean pepperoni;
private boolean bacon;
public static class Builder {
private Pizza pizza = new Pizza();
public Builder(int size) {
pizza.size = size;
}
public Builder cheese(boolean value) {
pizza.cheese = value;
return this;
}
public Builder pepperoni(boolean value) {
pizza.pepperoni = value;
return this;
}
public Builder bacon(boolean value) {
pizza.bacon = value;
return this;
}
public Pizza build() {
return pizza;
}
}
private Pizza() {
}
}
关于java - Joshua Bloch 的 Builder 模式和 PMD 警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6174419/
在“Effective Java”一书中,Joshua Bloch 说:“不可能在 Collection Framework 中子类化任何方便的实现类”。 如果 ArrayList、LinkedLis
从这里Artima article on clone vs copy constructor : Object's clone method is very tricky. It's based on
我的一个类中有许多构造函数,因此我认为为其中一个类(Spring 项目)实现 Bloch 的“构建器模式”(参见 http://www.informit.com/articles/article.as
假设我有一个抽象类 (BaseThing)。它有一个必需参数(“base required”)和一个可选参数(“base optional”)。我有一个扩展它的具体类(Thing)。它还具有一个必需参
我正在考虑使用 Joshua Bloch 所描述的构建器模式 here .我有一个显示警报消息的类,将被许多应用程序使用。它可以有大量不同的选项,如 line1、btn txt、title、line2
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 8 年前。 Improve th
读了两遍这本书的这一部分后,我仍然不明白为什么如此广泛地阐述这一点。非静态成员类是语言的一部分。同意并非任何编程语言的所有部分都是完美的。发挥非静态成员类的优点,即可以访问封闭实例的方法,因此很少会超
我正在阅读 Joshua Bloch 的书 effective java。在“favor composition over inheritance”的第 16 条中,他给出了一个使用 HashSet
我正在使用 QuTiP 绘制 Bloch 球体图。我想给它一个标题。我怎样才能做到这一点?我在 Google 上搜索但找不到答案。 最佳答案 您需要将 Bloch 球体渲染到 matploltib 中
我想知道封闭类可以创建多少个静态成员类实例。我假设只有一个,但 Bloch 的以下摘录对我来说没有意义。 引用 Joshua Bloch 的 Effective Java - Item 22*:优先使
我使用 Joshua Bloch 介绍的 Java 构建器模式。有时,我发现与原始类型相比,使用默认值初始化某些字段的开销更高。 因此,我的策略是什么。 我延迟了这些字段的默认值初始化操作。 在构建过
考虑 Bloch 的 Builder 模式的逐字副本(对 C# 的语法进行了更改): public class NutritionFacts { public int ServingSize {
与仅使用构造函数创建对象相比,内存和性能使用情况如何? 这里的用法是创建一个 Set或 List可能包含数以百万计的条目,我担心使用 Bloch 的 Builder 模式的开销。我过去使用过它,但从未
我最近开始使用 QuTip for Python。我想使用 qutip.Bloch() 绘制 Bloch 球体中两级系统的演化,但我不知道如何将这样的图绘制为连续线。 这是我目前使用的代码: bola
这个问题已经有答案了: Properly removing an Integer from a List (8 个回答) 已关闭 9 年前。 我现在正在阅读 Joshua Bloch 的《Effect
Joshua Bloch 建议将构建器模式作为具有太多构造选项或太多构造函数参数的类的解决方案。 GOF builder 的基本意图是“将对象的构造与其表示分离”,或者基本上是为具有相同基类的不同最终
我正在尝试为下面的类使用 Builder 模式。最初我使用类的构造函数来设置所有参数,但不小心遇到了 Builder 模式,它看起来很适合我的用例。 下面是我的类(class),其中人们通常总是传递
回到 2007 年,我读了一篇关于 Joshua Blochs 的文章,介绍了“构建器模式”以及如何修改它以改善构造函数和 setter 的过度使用,尤其是当一个对象具有大量属性时,其中大部分是可选的
请看这个link .关于枚举,Bloch 先生说 Java’s enum types are classes that export one instance for each enumeration
我加入了 C# 潮流,想知道是否有 Joshua Bloch 的 Effective Java 的等价物对于 C# 世界。 鉴于它们的相似性,我已经能够将一些 Java 知识应用到 C# 中,但我对最
我是一名优秀的程序员,十分优秀!