2007-07-09

(3)创建模式之builder模式

关键字: 模式, pattern

 

这天,Y先生正在工作,突然Q女士来电话了:“老公,家里的电脑坏了,好像得重新安装系统!”

Y先生最怕重装系统,他只好说:“老婆,等我下班回家再给你装吧,太麻烦了,怕你弄不好。”

Q女士:怎么重装系统这么麻烦吗?好吧,晚上你早点回来。

晚上,Y先生和Q女士坐在电脑前,Y先生首先备份了需要的数据,然后使用光盘安装系统,格式化,安装,安装驱动。。。。。

终于1个小时以后,系统安装完毕!

Y先生擦了擦汗:好了,终于弄完了。

Q女士:这么麻烦啊,,,可是以后如果电脑再出问题,我想自己安装系统怎么办呢?

Y先生想了想,恩,这我可得想想办法。看来我们需要做一件复杂的事情(安装系统),以及如何去执行这个复杂的事情。

好吧,我们先来创建一个东西去做复杂的事情:

java 代码
  1. public interface ISysInstallBuilder {   
  2.        
  3.     public void backupdata();   
  4.     public void formatDisk();   
  5.     public void copyData();   
  6.     public void installUsefulTool();   
  7.        
  8. }   

Y先生:这是一个接口,下面我来实现安装windows xp 的实现:

java 代码
  1. public class WinXpInstallBuilder implements ISysInstallBuilder {   
  2.   
  3.     public void backupdata() {   
  4.         // TODO Auto-generated method stub   
  5.         //blalalala....   
  6.     }   
  7.   
  8.     public void formatDisk() {   
  9.         // TODO Auto-generated method stub   
  10.   
  11.     }   
  12.   
  13.     public void copyData() {   
  14.         // TODO Auto-generated method stub   
  15.   
  16.     }   
  17.   
  18.     public void installUsefulTool() {   
  19.         // TODO Auto-generated method stub   
  20.   
  21.     }   
  22.   
  23. }  

Q女士:嗯,通过这个类我就能安装系统了:

java 代码
  1. public static void main(String[] args) {   
  2.        
  3.     WinXpInstallBuilder builder = new WinXpInstallBuilder();   
  4.     builder.backupdata();   
  5.     builder.copyData();   
  6.     builder.formatDisk();   
  7.     builder.installUsefulTool();   
  8.        
  9. }  

Y先生:你看,你弄错了吧!格式化应该在复制数据之前。先别急,看看下面的:

java 代码
  1. public class SysInstallDirector {   
  2.        
  3.     private ISysInstallBuilder builder;   
  4.        
  5.     public SysInstallDirector(ISysInstallBuilder builder) {   
  6.         // TODO Auto-generated constructor stub   
  7.            
  8.         this.builder = builder;   
  9.     }   
  10.        
  11.     public void installSystem() {   
  12.            
  13.         builder.backupdata();   
  14.         builder.formatDisk();   
  15.         builder.copyData();   
  16.         builder.installUsefulTool();   
  17.     }   
  18.        
  19. }  

Q 女士:嗯,我明白你的意思了,我以后就用这个类来安装系统就行了,对吧:

java 代码
  1. public static void main(String[] args) {   
  2.        
  3.     SysInstallDirector director = new SysInstallDirector(   
  4.                         new WinXpInstallBuilder());   
  5.     director.installSystem();   
  6.        
  7. }  

Q女士:嗯,这样当我做这件复杂的事情的时候时,就不怕把它弄错了!

评论
uhlan 2007-07-12
哈哈,挺有意思的
yananay 2007-07-12
安装出来得系统,其实就是创建出来得东西了 :-)
huangyh 2007-07-10
恩,这种讲解方式挺有趣的:)
builder模式是个创建 型模式 ,builder要能创建出产品,你的例子好象没反映出这点.
发表评论

您还没有登录,请登录后发表评论

yananay
搜索本博客
我的相册
D35bafa8-5bf0-475f-aa06-16f3080557a1-thumb
tdd
共 3 张
存档
最新评论