本站首页    管理页面    写新日志    退出


«August 2025»
12
3456789
10111213141516
17181920212223
24252627282930
31


公告
 本博客在此声明所有文章均为转摘,只做资料收集使用。

我的分类(专题)

日志更新

最新评论

留言板

链接

Blog信息
blog名称:
日志总数:1304
评论数量:2242
留言数量:5
访问次数:7593591
建立时间:2006年5月29日




[设计模式]『蚂蚁学模式』之实例化建造者模式
软件技术

lhwork 发表于 2007/1/10 9:25:51

建造者模式可以将一个产品的内部表象与产品的生成过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象。UML图示:500)this.width=500'>1. com.cleversoft.designpatterns.builder2.PostalClert.java: 500)this.width=500'>package com.cleversoft.designpatterns.builder2;500)this.width=500'>public class PostalClert 500)this.width=500'>{    public void construct(LetterBuilder letterBuilder) 500)this.width=500'>{        letterBuilder.buildEnvelop();        letterBuilder.buildStamp();    }}2. com.cleversoft.designpatterns.builder2.LetterBuilder.java: 500)this.width=500'>package com.cleversoft.designpatterns.builder2;500)this.width=500'>public abstract class LetterBuilder 500)this.width=500'>{    public abstract void buildEnvelop();    public abstract void buildStamp();    public abstract Letter getLetter();}3. com.cleversoft.designpatterns.builder2.OrdinaryMailBuilder.java: 500)this.width=500'>package com.cleversoft.designpatterns.builder2;500)this.width=500'>public class OrdinaryMailBuilder extends LetterBuilder 500)this.width=500'>{    private Letter ordinaryMail = new OrdinaryMail();    public void buildEnvelop() 500)this.width=500'>{        ordinaryMail.add("ordinaryEnvelop", 0.1);    }    public void buildStamp() 500)this.width=500'>{        ordinaryMail.add("ordinaryStamp", 1.0);    }    public Letter getLetter() 500)this.width=500'>{        return ordinaryMail;    }}4. com.cleversoft.designpatterns.builder2.RegisteredLetterBuilder.java: 500)this.width=500'>package com.cleversoft.designpatterns.builder2;500)this.width=500'>public class RegisteredLetterBuilder extends LetterBuilder 500)this.width=500'>{    private Letter registeredLetter = new RegisteredLetter();    public void buildEnvelop() 500)this.width=500'>{        registeredLetter.add("registeredEnvelop", 2.0);    }    public void buildStamp() 500)this.width=500'>{        registeredLetter.add("registeredStamp", 15.0);    }    public Letter getLetter() 500)this.width=500'>{        return registeredLetter;    }}5. com.cleversoft.designpatterns.builder2.Letter.java: 500)this.width=500'>package com.cleversoft.designpatterns.builder2;500)this.width=500'>public interface Letter 500)this.width=500'>{    public abstract void add(String type, double price);    public abstract void list();}6. com.cleversoft.designpatterns.builder2.OrdinaryMail.java: 500)this.width=500'>package com.cleversoft.designpatterns.builder2;500)this.width=500'>500)this.width=500'>import java.util.Enumeration;500)this.width=500'>import java.util.Hashtable;500)this.width=500'>public class OrdinaryMail implements Letter 500)this.width=500'>{    Hashtable<String, Double> letter = new Hashtable<String, Double>();    /**//*     * (non-Javadoc)     *      * @see com.cleversoft.designpatterns.builder2.ILetter#add(java.lang.String,     *      double)     */    public void add(String type, double price) 500)this.width=500'>{        letter.put(type, price);    }    /**//*     * (non-Javadoc)     *      * @see com.cleversoft.designpatterns.builder2.ILetter#show()     */    public void list() 500)this.width=500'>{        System.out.println("Ordinary Letter List\n");        Enumeration keys = letter.keys();        while (keys.hasMoreElements()) 500)this.width=500'>{            String key = keys.nextElement().toString();            String value = letter.get(key).toString();            System.out.println(key + " " + value + "元");        }    }}7. com.cleversoft.designpatterns.builder2.RegisteredLetter.java: 500)this.width=500'>package com.cleversoft.designpatterns.builder2;500)this.width=500'>500)this.width=500'>import java.util.Enumeration;500)this.width=500'>import java.util.Hashtable;500)this.width=500'>public class RegisteredLetter implements Letter 500)this.width=500'>{    Hashtable<String, Double> letter = new Hashtable<String, Double>();    /**//*     * (non-Javadoc)     *      * @see com.cleversoft.designpatterns.builder2.ILetter#add(java.lang.String,     *      double)     */    public void add(String type, double price) 500)this.width=500'>{        letter.put(type, price);    }    /**//*     * (non-Javadoc)     *      * @see com.cleversoft.designpatterns.builder2.ILetter#show()     */    public void list() 500)this.width=500'>{        System.out.println("Registered Letter List\n");        Enumeration keys = letter.keys();        while (keys.hasMoreElements()) 500)this.width=500'>{            String key = keys.nextElement().toString();            String value = letter.get(key).toString();            System.out.println(key + " " + value + "元");        }    }}8. com.cleversoft.designpatterns.builder2.Main.java: 500)this.width=500'>package com.cleversoft.designpatterns.builder2;500)this.width=500'>public class Main 500)this.width=500'>{    public static void main(String[] args) 500)this.width=500'>{        LetterBuilder lb = new OrdinaryMailBuilder();        PostalClert pc = new PostalClert();        pc.construct(lb);        Letter l = lb.getLetter();        l.list();    }}参考资料:1. http://terrylee.cnblogs.com/archive/2005/12/19/299878.html2. 《Java与模式》


阅读全文(3008) | 回复(0) | 编辑 | 精华
 



发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)



站点首页 | 联系我们 | 博客注册 | 博客登陆

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