【设计模式】之实例化建造者模式

 建造者模式可以将一个产品的内部表象与产品的生成过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象。
1. com.cleversoft.designpatterns.builder2.PostalClert.java:
package  com.cleversoft.designpatterns.builder2;

public   class  PostalClert  {
    
public void construct(LetterBuilder letterBuilder) {
        letterBuilder.buildEnvelop();
        letterBuilder.buildStamp();
    }

}

2. com.cleversoft.designpatterns.builder2.LetterBuilder.java:
package  com.cleversoft.designpatterns.builder2;

public   abstract   class  LetterBuilder  {
    
public abstract void buildEnvelop();

    
public abstract void buildStamp();

    
public abstract Letter getLetter();
}

3. com.cleversoft.designpatterns.builder2.OrdinaryMailBuilder.java:
package  com.cleversoft.designpatterns.builder2;

public   class  OrdinaryMailBuilder  extends  LetterBuilder  {
    
private Letter ordinaryMail = new OrdinaryMail();

    
public void buildEnvelop() {
        ordinaryMail.add(
"ordinaryEnvelop"0.1);
    }


    
public void buildStamp() {
        ordinaryMail.add(
"ordinaryStamp"1.0);
    }


    
public Letter getLetter() {
        
return ordinaryMail;
    }


}

4. com.cleversoft.designpatterns.builder2.RegisteredLetterBuilder.java:
package  com.cleversoft.designpatterns.builder2;

public   class  RegisteredLetterBuilder  extends  LetterBuilder  {
    
private Letter registeredLetter = new RegisteredLetter();

    
public void buildEnvelop() {
        registeredLetter.add(
"registeredEnvelop"2.0);
    }


    
public void buildStamp() {
        registeredLetter.add(
"registeredStamp"15.0);
    }


    
public Letter getLetter() {
        
return registeredLetter;
    }

}

5. com.cleversoft.designpatterns.builder2.Letter.java:
package  com.cleversoft.designpatterns.builder2;

public   interface  Letter  {

    
public abstract void add(String type, double price);

    
public abstract void list();

}

6. com.cleversoft.designpatterns.builder2.OrdinaryMail.java:
package  com.cleversoft.designpatterns.builder2;

import  java.util.Enumeration;
import  java.util.Hashtable;

public   class  OrdinaryMail  implements  Letter  {
    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) {
        letter.put(type, price);
    }


    
/*
     * (non-Javadoc)
     * 
     * @see com.cleversoft.designpatterns.builder2.ILetter#show()
     
*/

    
public void list() {
        System.out.println(
"Ordinary Letter List/n");
        Enumeration keys 
= letter.keys();
        
while (keys.hasMoreElements()) {
            String key 
= keys.nextElement().toString();
            String value 
= letter.get(key).toString();
            System.out.println(key 
+ " " + value + "");
        }


    }

}

7. com.cleversoft.designpatterns.builder2.RegisteredLetter.java:
package  com.cleversoft.designpatterns.builder2;

import  java.util.Enumeration;
import  java.util.Hashtable;

public   class  RegisteredLetter  implements  Letter  {
    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) {
        letter.put(type, price);
    }


    
/*
     * (non-Javadoc)
     * 
     * @see com.cleversoft.designpatterns.builder2.ILetter#show()
     
*/

    
public void list() {
        System.out.println(
"Registered Letter List/n");
        Enumeration keys 
= letter.keys();
        
while (keys.hasMoreElements()) {
            String key 
= keys.nextElement().toString();
            String value 
= letter.get(key).toString();
            System.out.println(key 
+ " " + value + "");
        }


    }

}

8. com.cleversoft.designpatterns.builder2.Main.java:
package  com.cleversoft.designpatterns.builder2;

public   class  Main  {

    
public static void main(String[] args) {
        LetterBuilder lb 
= new OrdinaryMailBuilder();
        PostalClert pc 
= new PostalClert();
        pc.construct(lb);

        Letter l 
= lb.getLetter();
        l.list();
    }

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值