avatar
m*k
2
我们team有一senior programmer写了如同以下
的程序(我简化了非实质内容),他说是用了builder pattern,
我实在不明白这有何好处,各位以为呢?
just becoz we care about "final" then we create a builder which is almost a
duplicate of the original class?
public class Product
{
private final String m_a;
private final String m_b;
private final String m_c;
....
private final String m_z
protected Product(Builder builder)
{
super();
m_a = builder.m_a;
m_b = builder.m_b;
m_c = builder.m_c;
avatar
i*e
3
主角出场, 在我们家的众南瓜们是最小的,调皮,上房子了。
avatar
h*0
4
我觉得更好看的模式是直接:
Product p = Builder.build(a,b,c,d...);

a

【在 m*****k 的大作中提到】
: 我们team有一senior programmer写了如同以下
: 的程序(我简化了非实质内容),他说是用了builder pattern,
: 我实在不明白这有何好处,各位以为呢?
: just becoz we care about "final" then we create a builder which is almost a
: duplicate of the original class?
: public class Product
: {
: private final String m_a;
: private final String m_b;
: private final String m_c;

avatar
y*g
5
氮肥太足
你那个真的是碗莲咩? 叶子, 特别是莲蓬 那么大, 像普通荷花

【在 i*******e 的大作中提到】
: 主角出场, 在我们家的众南瓜们是最小的,调皮,上房子了。
avatar
g*g
6
Builder pattern is useless until you have 2 builders
to begin with.

a

【在 m*****k 的大作中提到】
: 我们team有一senior programmer写了如同以下
: 的程序(我简化了非实质内容),他说是用了builder pattern,
: 我实在不明白这有何好处,各位以为呢?
: just becoz we care about "final" then we create a builder which is almost a
: duplicate of the original class?
: public class Product
: {
: private final String m_a;
: private final String m_b;
: private final String m_c;

avatar
T*m
7
姜狗院子秋意正浓!
莲子给你吃了?

【在 i*******e 的大作中提到】
: 叶子
avatar
m*t
8
The idea behind the builder pattern is
to achieve a more fluid API. It would
make more sense if, e.g., a
Product instance requires a complex
sequence of API calls before it can be
used.
A side note - I'm not sure about
the Product constructor that takes
a Builder instance. I wouldn't have
Product depend on Builder, just like
I wouldn't have any core business object
depend on a helper class.

almost a

【在 m*****k 的大作中提到】
: 我们team有一senior programmer写了如同以下
: 的程序(我简化了非实质内容),他说是用了builder pattern,
: 我实在不明白这有何好处,各位以为呢?
: just becoz we care about "final" then we create a builder which is almost a
: duplicate of the original class?
: public class Product
: {
: private final String m_a;
: private final String m_b;
: private final String m_c;

avatar
b*y
9
看见莲蓬了!
avatar
b*y
10
lz帖子里面的这个用法好像是照搬Joshua Bloch那本书里面的

【在 m******t 的大作中提到】
: The idea behind the builder pattern is
: to achieve a more fluid API. It would
: make more sense if, e.g., a
: Product instance requires a complex
: sequence of API calls before it can be
: used.
: A side note - I'm not sure about
: the Product constructor that takes
: a Builder instance. I wouldn't have
: Product depend on Builder, just like

avatar
i*e
11
莲子为啥个个都是空的, 郁闷了。。。就吃到一个,靠
avatar
i*e
13
起码根藕和手指那么粗, 就这么种出来的。
去年的确买了更小品种的 (叶子和2枚铜钱大小,藕像小孩的手指) 今年春天大意了
, 没把去年留下的根藕种好,关键我怀疑是底肥上了太足了, 全部烂掉了,明年去那
家再买过吧,唉。

【在 y****g 的大作中提到】
: 氮肥太足
: 你那个真的是碗莲咩? 叶子, 特别是莲蓬 那么大, 像普通荷花

avatar
l*i
14
和这个'pattern'贴些边的是fluent interface http://martinfowler.com/bliki/FluentInterface.html,属于internal domain-specific language。
builder的本质上是把对象一点点'捏'出来
例如:
htmlBuilder.beginParagraph();
htmlBuilder.text("Hey you, refactor to patterns only!");
htmlBuilder.endParagraph();
htmlBuilder.newLine();
Html testimony = htmlBuilder.getHtml();

a

【在 m*****k 的大作中提到】
: 我们team有一senior programmer写了如同以下
: 的程序(我简化了非实质内容),他说是用了builder pattern,
: 我实在不明白这有何好处,各位以为呢?
: just becoz we care about "final" then we create a builder which is almost a
: duplicate of the original class?
: public class Product
: {
: private final String m_a;
: private final String m_b;
: private final String m_c;

avatar
i*e
15
众丝瓜南瓜继续长大中!看天气, 要等10天以后才真正凉下来, 那时候瓜瓜都长了差
不多了!
ready for Halloween!

【在 T*******m 的大作中提到】
: 姜狗院子秋意正浓!
: 莲子给你吃了?

avatar
s*e
16
For me, it seems an example of overuse.
Builder pattern is one of 5 creational gof pattern. It will provide you
flexibility to build class based on the components. For me you would like to
choose this pattern if
1. the components can be coming in different fllavors
2. the components share the same interface.
For example, if you want to build a house, you have many kinds of windows to
choose, all these windows share the same interface, but they loos different
, so you can call house.buildWindow(e
avatar
G*A
17
很好了,你种的俺都木有。看见香椿了。

【在 i*******e 的大作中提到】
: 众丝瓜南瓜继续长大中!看天气, 要等10天以后才真正凉下来, 那时候瓜瓜都长了差
: 不多了!
: ready for Halloween!

avatar
L*1
18
我也发现爱太多了不行,一棵盆里的小辣椒我给予了诸多希望,也加了最多的肥,结果
结果她第一个挂了。

【在 i*******e 的大作中提到】
: 起码根藕和手指那么粗, 就这么种出来的。
: 去年的确买了更小品种的 (叶子和2枚铜钱大小,藕像小孩的手指) 今年春天大意了
: , 没把去年留下的根藕种好,关键我怀疑是底肥上了太足了, 全部烂掉了,明年去那
: 家再买过吧,唉。

avatar
a*a
19
惯子如杀子
真是木有错

【在 L***1 的大作中提到】
: 我也发现爱太多了不行,一棵盆里的小辣椒我给予了诸多希望,也加了最多的肥,结果
: 结果她第一个挂了。

avatar
l*d
20
熊猫,来我家挖两颗香椿吧,看把你馋的。

【在 G********A 的大作中提到】
: 很好了,你种的俺都木有。看见香椿了。
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。