设计模式学习----Builder模式
2009-12-29 16:03
405 查看
类型:创建模式
定义: 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示.
Builder模式是一步一步创建一个复杂的对象,它允许用户可以只通过指定复杂对象的类型和内容就可以构建它们.用户不知道内部的具体
构建细节.
为何使用?
是为了将构建复杂对象的过程和它的部件解耦.注意: 是解耦过程和部件.因为一个复杂的对象,不但有很多大量组成部分,如汽车,有很多部件:
车轮 方向盘 发动机还有各种小零件等等,部件很多,但远不止这些,如何将这些部件装配成一辆汽车,这个装配过程也很复杂(需要很好的组装技术),Builder模式就是为了将部件和组装过程分开.
模式UML图
![](http://p.blog.csdn.net/images/p_blog_csdn_net/zgylhm/EntryImages/20091229/建造者.jpg)
下面举一个例子来说明这个模式的使用,代码如下:
import java.util.ArrayList;
class Product{
private ArrayList<String> parts=new ArrayList<String>();
public void add(String part){
parts.add(part);
}
public void show(){
System.out.println("Product有以下几部分构成:");
for(String s:parts){
System.out.println(s);
}
}
}
interface Builder
{
public void buildPartA();
public void buildPartB();
public void buildPartC();
public Product getProduct();
}
class Worker implements Builder
{
private Product product;
public void buildPartA() {
product=new Product();
product.add("A部分");
}
public void buildPartB() {
product.add("B部分");
}
public void buildPartC(){
product.add("C部分");
}
public Product getProduct(){
return product;
}
}
class Designer
{
public void order(Builder builder)
{
builder.buildPartA();
builder.buildPartB();
builder.buildPartC();
}
}
public class Test
{
public static void main(String[] args)
{
Designer designer=new Designer();
Builder builder=new Worker();
designer.order(builder);
Product product =builder.getProduct();
product.show();
}
}
输出结果如下:
Product有以下几部分构成:
A部分
B部分
C部分
从这个例子我们可以看出Builder模式,是把建造对象的过程分成一部分一部分来完成的。
小结:Builder模式主要是为了将构建复杂对象的过程和它的部件解耦。使得我们不用去关心
每个部件是如何组装的。
定义: 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示.
Builder模式是一步一步创建一个复杂的对象,它允许用户可以只通过指定复杂对象的类型和内容就可以构建它们.用户不知道内部的具体
构建细节.
为何使用?
是为了将构建复杂对象的过程和它的部件解耦.注意: 是解耦过程和部件.因为一个复杂的对象,不但有很多大量组成部分,如汽车,有很多部件:
车轮 方向盘 发动机还有各种小零件等等,部件很多,但远不止这些,如何将这些部件装配成一辆汽车,这个装配过程也很复杂(需要很好的组装技术),Builder模式就是为了将部件和组装过程分开.
模式UML图
![](http://p.blog.csdn.net/images/p_blog_csdn_net/zgylhm/EntryImages/20091229/建造者.jpg)
下面举一个例子来说明这个模式的使用,代码如下:
import java.util.ArrayList;
class Product{
private ArrayList<String> parts=new ArrayList<String>();
public void add(String part){
parts.add(part);
}
public void show(){
System.out.println("Product有以下几部分构成:");
for(String s:parts){
System.out.println(s);
}
}
}
interface Builder
{
public void buildPartA();
public void buildPartB();
public void buildPartC();
public Product getProduct();
}
class Worker implements Builder
{
private Product product;
public void buildPartA() {
product=new Product();
product.add("A部分");
}
public void buildPartB() {
product.add("B部分");
}
public void buildPartC(){
product.add("C部分");
}
public Product getProduct(){
return product;
}
}
class Designer
{
public void order(Builder builder)
{
builder.buildPartA();
builder.buildPartB();
builder.buildPartC();
}
}
public class Test
{
public static void main(String[] args)
{
Designer designer=new Designer();
Builder builder=new Worker();
designer.order(builder);
Product product =builder.getProduct();
product.show();
}
}
输出结果如下:
Product有以下几部分构成:
A部分
B部分
C部分
从这个例子我们可以看出Builder模式,是把建造对象的过程分成一部分一部分来完成的。
小结:Builder模式主要是为了将构建复杂对象的过程和它的部件解耦。使得我们不用去关心
每个部件是如何组装的。
相关文章推荐
- 设计模式学习笔记(四)——Builder生成器模式
- 跟着实例学习设计模式(6)-生成器模式builder(创建型)
- 设计模式学习笔记——建造者模式(Builder Pattern)
- 设计模式学习总结:生成器模式(Builder)
- 设计模式学习笔记(四)——Builder生成器模式
- 设计模式学习笔记:Builder(创建者)
- 设计模式之Builder模式学习
- 设计模式学习笔记(五):建造者模式【Builder Pattern】(二)问题改进
- 设计模式学习--Builder
- 设计模式C++学习笔记之十(Builder建造者模式)
- 设计模式之--生成器(builder)模式(学习分析笔记)
- 设计模式入门学习 构建Builder模式
- 步步为营 .NET 设计模式学习笔记 十、Builder(建造者模式)
- 设计模式之Builder 的学习笔记
- 设计模式学习总结2 - 创建型2 - Builder生成器模式
- 设计模式学习之建造者模式(Builder,创建型模式)(6)
- Android设计模式学习之Builder模式
- C# 设计模式学习四 Builder生成器模式
- Builder设计模式学习笔记
- 设计模式学习之Builder模式