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与模式》 |
|
|