最近我遇到了一个面试问题。
问题:假设你有很多值(比如20多个) 你需要在对象中设置。现在使用setter或设置这些值 使用构造函数是一项繁琐的任务。
您将使用什么Java设计模式来解决此问题
帮助我了解解决方案的人。
答案 0 :(得分:0)
嗯,最后这些属性不知何故,但有些模式可能会帮助你减少聊天。快速wikipedia search for creational patterns根据具体情况显示一些可能的拟合:
要真正决定,您需要了解确切的情况和需求。
答案 1 :(得分:0)
标准建设者:
public class Account {
private final String userId;
private final String token;
public Account(String userId, String token) {
this.userId = userId;
this.token = token;
}
public String getUserId() {
return userId;
}
public String getToken() {
return token;
}
public static class Builder {
private String userId;
private String token;
public Builder setUserId(String userId) {
this.userId = userId;
return this;
}
public Builder setToken(String token) {
this.token = token;
return this;
}
public Account build() {
return new Account(userId, token);
}
}
}
答案 2 :(得分:0)
如果值是高度动态的,那么拥有Map<String, Object>
(对于基于索引的访问可能是List<Object>
)和诸如public Double getDoubleByName(String nameKey)
(以及与之对应的索引,例如public String getStringAt(int index)
)?
编辑:
如果您对Map
实现感兴趣,该实现还提供了一种高效的方式(即: O(log2(n))),通过像List
这样的元素索引来访问元素,则您可以尝试使用my repo上的我自己的MapTreeAVL
和类似的代码
MapTreeAVL<String, Object> m = MapTreeAVL.newMap(MapTreeAVL.Optimizations.ToQueueFIFOIterating, String::compareTo);
....
Object o = m.getAt(7);