建造者模式可以将一个产品的内部表象与产品的生成过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象。
1. com.cleversoft.designpatterns.builder2.PostalClert.java:
package
com.cleversoft.designpatterns.builder2;
![点击在新窗口查看原始图片](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
public class PostalClert
{
public void construct(LetterBuilder letterBuilder)
{
letterBuilder.buildEnvelop();
letterBuilder.buildStamp();
}
}
2. com.cleversoft.designpatterns.builder2.LetterBuilder.java:
package
com.cleversoft.designpatterns.builder2;
![点击在新窗口查看原始图片](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
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;
![点击在新窗口查看原始图片](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
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;
![点击在新窗口查看原始图片](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
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;
![点击在新窗口查看原始图片](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
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;
![点击在新窗口查看原始图片](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
import
java.util.Enumeration;
import
java.util.Hashtable;
![点击在新窗口查看原始图片](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
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;
![点击在新窗口查看原始图片](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
import
java.util.Enumeration;
import
java.util.Hashtable;
![点击在新窗口查看原始图片](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
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;
![点击在新窗口查看原始图片](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
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();
}
}
1. com.cleversoft.designpatterns.builder2.PostalClert.java:
![点击在新窗口查看原始图片](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
![点击在新窗口查看原始图片](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
public class PostalClert
![点击在新窗口查看原始图片](https://i-blog.csdnimg.cn/blog_migrate/9b8a8a44dd1c74ae49c20a7cd451974e.gif)
public void construct(LetterBuilder letterBuilder)
![点击在新窗口查看原始图片](https://i-blog.csdnimg.cn/blog_migrate/9b8a8a44dd1c74ae49c20a7cd451974e.gif)
letterBuilder.buildEnvelop();
letterBuilder.buildStamp();
}
}
2. com.cleversoft.designpatterns.builder2.LetterBuilder.java:
![点击在新窗口查看原始图片](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
![点击在新窗口查看原始图片](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
public abstract class LetterBuilder
![点击在新窗口查看原始图片](https://i-blog.csdnimg.cn/blog_migrate/9b8a8a44dd1c74ae49c20a7cd451974e.gif)
public abstract void buildEnvelop();
public abstract void buildStamp();
public abstract Letter getLetter();
}
3. com.cleversoft.designpatterns.builder2.OrdinaryMailBuilder.java:
![点击在新窗口查看原始图片](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
![点击在新窗口查看原始图片](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
public class OrdinaryMailBuilder extends LetterBuilder
![点击在新窗口查看原始图片](https://i-blog.csdnimg.cn/blog_migrate/9b8a8a44dd1c74ae49c20a7cd451974e.gif)
private Letter ordinaryMail = new OrdinaryMail();
public void buildEnvelop()
![点击在新窗口查看原始图片](https://i-blog.csdnimg.cn/blog_migrate/9b8a8a44dd1c74ae49c20a7cd451974e.gif)
ordinaryMail.add("ordinaryEnvelop", 0.1);
}
public void buildStamp()
![点击在新窗口查看原始图片](https://i-blog.csdnimg.cn/blog_migrate/9b8a8a44dd1c74ae49c20a7cd451974e.gif)
ordinaryMail.add("ordinaryStamp", 1.0);
}
public Letter getLetter()
![点击在新窗口查看原始图片](https://i-blog.csdnimg.cn/blog_migrate/9b8a8a44dd1c74ae49c20a7cd451974e.gif)
return ordinaryMail;
}
}
4. com.cleversoft.designpatterns.builder2.RegisteredLetterBuilder.java:
![点击在新窗口查看原始图片](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
![点击在新窗口查看原始图片](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
public class RegisteredLetterBuilder extends LetterBuilder
![点击在新窗口查看原始图片](https://i-blog.csdnimg.cn/blog_migrate/9b8a8a44dd1c74ae49c20a7cd451974e.gif)
private Letter registeredLetter = new RegisteredLetter();
public void buildEnvelop()
![点击在新窗口查看原始图片](https://i-blog.csdnimg.cn/blog_migrate/9b8a8a44dd1c74ae49c20a7cd451974e.gif)
registeredLetter.add("registeredEnvelop", 2.0);
}
public void buildStamp()
![点击在新窗口查看原始图片](https://i-blog.csdnimg.cn/blog_migrate/9b8a8a44dd1c74ae49c20a7cd451974e.gif)
registeredLetter.add("registeredStamp", 15.0);
}
public Letter getLetter()
![点击在新窗口查看原始图片](https://i-blog.csdnimg.cn/blog_migrate/9b8a8a44dd1c74ae49c20a7cd451974e.gif)
return registeredLetter;
}
}
5. com.cleversoft.designpatterns.builder2.Letter.java:
![点击在新窗口查看原始图片](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
![点击在新窗口查看原始图片](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
public interface Letter
![点击在新窗口查看原始图片](https://i-blog.csdnimg.cn/blog_migrate/9b8a8a44dd1c74ae49c20a7cd451974e.gif)
public abstract void add(String type, double price);
public abstract void list();
}
6. com.cleversoft.designpatterns.builder2.OrdinaryMail.java:
![点击在新窗口查看原始图片](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
![点击在新窗口查看原始图片](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
![点击在新窗口查看原始图片](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
![点击在新窗口查看原始图片](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
![点击在新窗口查看原始图片](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
public class OrdinaryMail implements Letter
![点击在新窗口查看原始图片](https://i-blog.csdnimg.cn/blog_migrate/9b8a8a44dd1c74ae49c20a7cd451974e.gif)
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)
![点击在新窗口查看原始图片](https://i-blog.csdnimg.cn/blog_migrate/9b8a8a44dd1c74ae49c20a7cd451974e.gif)
letter.put(type, price);
}
/**//*
* (non-Javadoc)
*
* @see com.cleversoft.designpatterns.builder2.ILetter#show()
*/
public void list()
![点击在新窗口查看原始图片](https://i-blog.csdnimg.cn/blog_migrate/9b8a8a44dd1c74ae49c20a7cd451974e.gif)
System.out.println("Ordinary Letter List/n");
Enumeration keys = letter.keys();
while (keys.hasMoreElements())
![点击在新窗口查看原始图片](https://i-blog.csdnimg.cn/blog_migrate/9b8a8a44dd1c74ae49c20a7cd451974e.gif)
String key = keys.nextElement().toString();
String value = letter.get(key).toString();
System.out.println(key + " " + value + "元");
}
}
}
7. com.cleversoft.designpatterns.builder2.RegisteredLetter.java:
![点击在新窗口查看原始图片](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
![点击在新窗口查看原始图片](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
![点击在新窗口查看原始图片](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
![点击在新窗口查看原始图片](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
![点击在新窗口查看原始图片](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
public class RegisteredLetter implements Letter
![点击在新窗口查看原始图片](https://i-blog.csdnimg.cn/blog_migrate/9b8a8a44dd1c74ae49c20a7cd451974e.gif)
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)
![点击在新窗口查看原始图片](https://i-blog.csdnimg.cn/blog_migrate/9b8a8a44dd1c74ae49c20a7cd451974e.gif)
letter.put(type, price);
}
/**//*
* (non-Javadoc)
*
* @see com.cleversoft.designpatterns.builder2.ILetter#show()
*/
public void list()
![点击在新窗口查看原始图片](https://i-blog.csdnimg.cn/blog_migrate/9b8a8a44dd1c74ae49c20a7cd451974e.gif)
System.out.println("Registered Letter List/n");
Enumeration keys = letter.keys();
while (keys.hasMoreElements())
![点击在新窗口查看原始图片](https://i-blog.csdnimg.cn/blog_migrate/9b8a8a44dd1c74ae49c20a7cd451974e.gif)
String key = keys.nextElement().toString();
String value = letter.get(key).toString();
System.out.println(key + " " + value + "元");
}
}
}
8. com.cleversoft.designpatterns.builder2.Main.java:
![点击在新窗口查看原始图片](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
![点击在新窗口查看原始图片](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
public class Main
![点击在新窗口查看原始图片](https://i-blog.csdnimg.cn/blog_migrate/9b8a8a44dd1c74ae49c20a7cd451974e.gif)
public static void main(String[] args)
![点击在新窗口查看原始图片](https://i-blog.csdnimg.cn/blog_migrate/9b8a8a44dd1c74ae49c20a7cd451974e.gif)
LetterBuilder lb = new OrdinaryMailBuilder();
PostalClert pc = new PostalClert();
pc.construct(lb);
Letter l = lb.getLetter();
l.list();
}
}