首页(162) xml(5) spring(1) 生活(8) java(70) 代码(10) 英语(4) 数据库(7) c#(14) 成长(10) 软件工程(27)  写新日志
 
 

玻璃杯中的花生壳

  真爱的事业和真正的爱情一生只有一次,都值得我们温柔地相待,因为那种感觉是永远都无法复制的, 这世界真正属于你的东西其实并不多,你不好好珍惜,它便会离你而去,包括机遇,包括爱情,包括生命。
   不要找任何理由,  当幸福在你身边的时候就抓住它,你就一定会很幸福! 
   

时 间 记 忆
«October 2025»
1234
567891011
12131415161718
19202122232425
262728293031

最 新 评 论
回复:xml的Jdom解析过程详解
回复:突然想到的几句话!
 Boyle came out of n
回复:xml的Jdom解析过程详解
回复:配置Spring数据源
回复:使用SAX解析XML
回复:java中写文件操作时FileOu
回复:关联和依赖关系的区分
回复:HttpSessionListen
回复:Spring AOP四种创建通知(

最 新 日 志
Java开发者的十大戒律
配置Spring数据源
java多线程设计模式
java中switch的使用
性格,编码,测试
突然想到的几句话!
理解Spring AOP中的关键概念
Spring AOP四种创建通知(拦截器
xml的四种解析方法 比较 sax,do
xml的Jdom解析过程详解

最 新 留 言
签写新留言

我渴望知识
很好的东东
帖子不错,道声谢
想拜师学艺
我的呼喊

搜 索


用 户 登 录
用户名称:
登陆密码:
密码保存:

友 情 连 接

模板设计:部落窝模板世界

blog名称:玻璃杯中的花生壳
日志总数:162
评论数量:249
留言数量:1
访问次数:829953
建立时间:2004年11月4日
 
 
 
[软件工程]设计模式之Builder
[ 2006/8/5 12:25:10 | By: 玻璃杯中的花生壳 ]
 
Builder模式定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示. Builder模式是一步一步创建一个复杂的对象,它允许用户可以只通过指定复杂对象的类型和内容就可以构建它们.用户不知道内部的具体构建细节.Builder模式是非常类似抽象工厂模式,细微的区别大概只有在反复使用中才能体会到. 为何使用?是为了将构建复杂对象的过程和它的部件解耦.注意: 是解耦过程和部件. 因为一个复杂的对象,不但有很多大量组成部分,如汽车,有很多部件:车轮 方向盘 发动机还有各种小零件等等,部件很多,但远不止这些,如何将这些部件装配成一辆汽车,这个装配过程也很复杂(需要很好的组装技术),Builder模式就是为了将部件和组装过程分开. 如何使用?首先假设一个复杂对象是由多个部件组成的,Builder模式是把复杂对象的创建和部件的创建分别开来,分别用Builder类和Director类来表示. 首先,需要一个接口,它定义如何创建复杂对象的各个部件: public interface Builder {   //创建部件A  比如创建汽车车轮  void buildPartA();   //创建部件B 比如创建汽车方向盘  void buildPartB();   //创建部件C 比如创建汽车发动机  void buildPartC();   //返回最后组装成品结果 (返回最后装配好的汽车)  //成品的组装过程不在这里进行,而是转移到下面的Director类中进行.  //从而实现了解耦过程和部件  Product getResult(); } 用Director构建最后的复杂对象,而在上面Builder接口中封装的是如何创建一个个部件(复杂对象是由这些部件组成的),也就是说Director的内容是如何将部件最后组装成成品: public class Director {   private Builder builder;   public Director( Builder builder ) {     this.builder = builder;   }   // 将部件partA partB partC最后组成复杂对象  //这里是将车轮 方向盘和发动机组装成汽车的过程  public void construct() {     builder.buildPartA();    builder.buildPartB();    builder.buildPartC();   } } Builder的具体实现ConcreteBuilder:通过具体完成接口Builder来构建或装配产品的部件;定义并明确它所要创建的是什么具体东西;提供一个可以重新获取产品的接口: public class ConcreteBuilder implements Builder {   Part partA, partB, partC;   public void buildPartA() {    //这里是具体如何构建partA的代码  };   public void buildPartB() {     //这里是具体如何构建partB的代码  };    public void buildPartC() {     //这里是具体如何构建partB的代码  };    public Product getResult() {     //返回最后组装成品结果  }; } 复杂对象:产品Product: public interface Product { } 复杂对象的部件: public interface Part { } 我们看看如何调用Builder模式:ConcreteBuilder builder = new ConcreteBuilder();Director director = new Director( builder ); director.construct(); Product product = builder.getResult(); Builder模式的应用在Java实际使用中,我们经常用到"池"(Pool)的概念,当资源提供者无法提供足够的资源,并且这些资源需要被很多用户反复共享时,就需要使用池. "池"实际是一段内存,当池中有一些复杂的资源的"断肢"(比如数据库的连接池,也许有时一个连接会中断),如果循环再利用这些"断肢",将提高内存使用效率,提高池的性能.修改Builder模式中Director类使之能诊断"断肢"断在哪个部件上,再修复这个部件.500)this.width=500'>
 

阅读全文(4535) | 回复(1) | 编辑 | 精华
 
 
回复:设计模式之Builder
[ 2006/8/9 14:10:04 | By: littcricket(游客) ]
 
1.定义一个接口,构造部件的各个部分2.创建一个类,存在一个构造函数注入上面的接口,存在 一个方法将上面各个部分连接起来3.接口的具体实现4.调用(接口的具体实现;组装;得到结果)
 

个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除
 
» 1 »

发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)
 
部落窝Blog模板世界部落窝Blog模板世界
站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.047 second(s), page refreshed 144807144 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号