设计模式与泡mm的关系之Builder生成器模式及Builder模式的再思考

来源:互联网 发布:淘宝上怎样删除好评 编辑:程序博客网 时间:2024/05/16 02:08
 
我跑我跑我跑
 
网上的原文如下:
2、BUILDER—MM最爱听的就是"我爱你"这句话了,见到不同地方的MM,要能够用她们的方言跟她说这句话哦,我有一个多种语言翻译机,上面每种语言都有一个按键,见到MM我只要按对应的键,它就能够用相应的语言说出"我爱你"这句话了,国外的MM也可以轻松搞掂,这就是我的"我爱你"builder。(这一定比美军在伊拉克用的翻译机好卖)
建造模式:将产品的内部表象和产品的生成过程分割开来,从而使一个建造过程生成具有不同的内部表象的产品对象。建造模式使得产品内部表象可以独立的变化,客户不必知道产品内部组成的细节。建造模式可以强制实行一种分步骤进行的建造过程。
 
点评:
要点评,首先就是理解了,特别是像对我这样的菜鸟来说。“我爱你”builder是一个concrete builder?或者说是concrete product?是的。在这个语境是可以这样子理解的。还有更好的理解吗(对实际问题的抽象能力是区别一个菜鸟和高手的标志)?我已经无能为力了,555。那么BuildA可能就是翻译“我”了,BuildB可能就是翻译“爱”了,而BuildC就是翻译“你”了。然后每一各种语言的builder都是一种具体的builder了。Director,在这里也就是我了,就可以根据具体情况选择用哪一种builder来生成哪一种语言了。
“将产品的内部表象和产品的生成过程分割开来,从而使一个建造过程生成具有不同的内部表象的产品对象。建造模式使得产品内部表象可以独立的变化,客户不必知道产品内部组成的细节。建造模式可以强制实行一种分步骤进行的建造过程。”
这段话该怎么来理解呢?这段话应该是理解builder的关键了。在磕了很多颗瓜子之后,我终于明白了这段话的意思了。嘻嘻。所谓内部表象就是具体的product了,所谓生成过程就是construct了。这段话的第一句的前半句好像还是挺有道理的哦,不过就是没说为什么?难道又是因为too complex?说了等于没说。但是后半句就有问题了,虽然不是错的,但是用在这里只能说是不太准确吧。因为同一个建造过程生成不同的内部表象完全是interface干的好事,管builder啥事?使用同一个过程是好是坏呢?这样完全把产品写死了,如果要构造后来的产品就很惨了。也许是我要求太高了吧,因为我希望构造过程也能够变,嘿嘿。但是,如果不要求统一的构建过程的话,我们又何必用construct呢?我们只要一个interface builder即可。
 
理解完毕,开始点评。点评不仅是评价的过程也是学习的过程阿。俺本来就是菜鸟,本来就是来学习的,嘿嘿。点评完毕!不是这么快吧?其实理解的过程也是个点评的过程吧。总之觉得把product分part来构造不是很理解,也许是因为我没有碰到过很复杂很复杂的product吧。以后会明白的。恩
再思考:如果把buildA-C合并起来,也就是说是一个简单的对象,那它又是怎么样的呢?那就是一个很典型的factory模式了,只不过他还是通过concrete product来取回result,而factory则是通过concrete factory来取得的。Over。
 
原创粉丝点击