design pattern : Builder,使用目的,将复杂对象的构建过程和其部件解耦

原创 2007年10月04日 09:31:00

design pattern : Builder

将一个复杂对象的 构建 与他的 表示 分离,使同样的构建可以有不同的表示
此模式是一步一步创建一个复杂对象,用户通过制定复杂对象的类型和内容来构建对象,without knowing the details about creation. similar to abstract factory

使用目的,将复杂对象的构建过程和其部件解耦

simple,以装自行车为例,假设自行车由2部件组成,轮子和车架
Builder模式就是把自行车的创建和部件的创建分别开来,分别用Builder 和 Director类

先建一个接口,定义部件的创建
public interface Builder { 
   //创建部件轮子
   void wheel(); 
   //创建部件车架
   void Sketon();  
 
   //返回最后组装成品结果 (返回最后装配好的自行车)
   //成品的组装过程不在这里进行,而是转移到下面的 Director 类中
进行.
   //从而实现了解耦过程和部件
   Bike getResult(); 

用Director来组装
public class Director {
   private Builder builder; 
   public Director( Builder builder ) { 
     this.builder = builder; 
   } 
   // 将部件 partA partB 最后组成复杂对象
   //这里是将车轮 车架组装成自行车的过程
   public void construct() { 
     builder.wheel();
     builder.sketon(); 
   } 

实现接口
public class ConcreteBuilder implements Builder { 
   Part partA, partB, partC; 
   public void wheel() {
     //这里是具体如何构建 wheel 的代码
     System.out.println("wheels have been built!");
 
   }; 
   public void sketon() { 
     //这里是具体如何构建 sketon 的代码
 System.out.println("sketon have been built!");
   }; 

    public Bike getResult() { 
      Bike bike1 =null;
 System.out.println("bike have been built!");
 return bike1;
   }; 
}
复杂对象:产品 Bike
public interface Product { }
部件:
public interface Part { }
简单的 Test函数
public static void main(String[] args) {
  // TODO Auto-generated method stub
  ConcreteBuilder builder = new ConcreteBuilder();
  Director director = new Director( builder ); 
  
  director.construct(); 
  Bike product = builder.getResult();
 }
Builder 模式的应用
在 Java 实际使用中,我们经常用到"池"(Pool)的概念,当资源提供者无法提供足够的资源,
并且这些资源需要被很多用户反复共享时,就需要使用池.
"池"实际是一段内存,当池中有一些复杂的资源的"断肢"(比如数据库的连接池,也许有时一
个连接会中断),如果循环再利用这些"断肢",将提高内存使用效率,提高池的性能.修改
Builder 模式中 Director 类使之能诊断"断肢"断在哪个部件上,再修复这个部件.

 

相关文章推荐

Design Pattern Explained 读书笔记一 重新认识面向对象|规范使用UML

新视角看面向对象 与 UML图什么是内聚性 closely the operations in a routine are related. 就是一个类中,各个方法之间的联系的紧密程度。内...
  • lemon89
  • lemon89
  • 2015年07月30日 21:29
  • 613

Java Design Pattern: Builder

The key feature of Builder pattern is that it involves a step-by-step process to build something, i....

Design Pattern: Builder 模式

学习是分享和合作式的! 转载请注明出处:http://blog.csdn.net/wdzxl198/article/details/9223275;  文章摘自: http://www.riabook...

Design Pattern:Builder

一定义: 将一个复杂的构建与其表示相分离相分离,使得同样的构建过程可以创建不同的表示。 二UML类图: 三模试角色与结构: Product:具体产品 Builder:用...

Design Pattern - Creational Patterns - Builder Pattern

2007 Section 3, Chapter 2 Builder Pattern Concept Builders usually deal with constru...

Design Pattern: Builder Pattern(建造者模式)

建造者模式的意义在于:为了防止客户端程序员因不熟悉某些部件的构造工序或者构成成分,而因为疏忽导致的最终成品残次。 打个比方,你要写一个画人的程序。人有一个头,一个身体,双手和双腿。然而,不同...

Design Pattern笔记(第三章 创建型模式 :Abstract Factoty---对象创建型模式)

工厂模式,把new的操作封装起来,屏蔽掉了客户直接接触具体对象的过程,只让客户与基类交互,降低耦合,增强代码的扩展性 意图: 提供一个创建一系列相关或相互依赖的接口,而无需指定它的具体类型。 简单...

Interaction design pattern

Interaction design is the art of facilitating interactions between humans through products and servi...

Design Pattern Abstract Factory

【适用性】 (1)一个系统要独立于它的产品的创建、组合和表示时; (2)一个系统要有多个产品系列中的一个来配置时; (3)当你要强调一系列相关的产品对象的设计以便进行联合使用时; (4)当你提...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:design pattern : Builder,使用目的,将复杂对象的构建过程和其部件解耦
举报原因:
原因补充:

(最多只允许输入30个字)