`
fancy888
  • 浏览: 39777 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

JAVA设计模式:建造者(Builder)

 
阅读更多

      创建对象的方法很多,常见的有构造函数,静态工厂方法,工厂方法等。以上三种方法不适合创建需要提供多个参数的对象,而其中某些参数是可选的场景。读者可能会想到通过空的构造方法先构建一个对象的雏形,然后调用getter和setter方法向对象内部注入状态数据。这种方式看似很不错,但还是可能存在对象的状态数据未完全写入前对象已被使用的风险。

 

      建造者模式将产品的内部表象和产品的生成过程分割开来,从而使一个建造过程生成具有不同的内部表象的产品对象。建造模式使得产品内部表象可以独立的变化,客户不必知道产品内部组成的细节。建造模式可以强制实行一种分步骤进行的建造过程。

 

      建造者模式涉及到的三个角色:

  • 产品:被建造的对象;
  • 建造者:抽象产品的建造过程;
  • 导演者:按需要建造不同的产品。

      以网上经典的创建文件的过程为例子,先来看要创建的产品,即文件对象,一个文件由三部分组成:

 

public class MyFile {
    private String head;
    private String content;
    private String end;

    public void setFcontent(Strig content) {
        this.content = content;
    }

    public void setEnd(String end) {
        this.end = end;
    }

    public void setHead(String head) {
        this.head = head;
    }

    public void write(String path) throws IOException{
        File f=new File(path);
        PrintWriter out=new PrintWriter(new FileWriter(f));
        out.println(head);
        out.println(content);
        out.println(end);
        out.close();  
    }
}

 

     再来看创建者,这里是一个接口:

 

public interface FileBuilder {

    void buildHead();

    void buildContent();
 
    void buildEnd();

    MyFile getResult();

}

 

     最后是导演者,用来实施对象的创建过程:

 

public class FileDirector {

    private FileBuilder filebuilder;

    public FileDirector(FileBuilder filebuilder){
        this.filebuilder=filebuilder;
    }

    public MyFile construct(){
        filebuilder.buildHead();
        filebuilder.buildContent();
        filebuilder.buildEnd();
        return filebuilder.getResult();
    }
}

 

     两个具体的创建者,分别用来创建XML文件和TXT文件:

 

public class XmlFileBuilder implements FileBuilder{

    private MyFile file = new MyFile();;
   
    public void buildHead() {
        file.setHead("<?xml version=\"1.0\"?><content>"); 
    }

    public void buildContent() {
        file.setContent("<node>value</node>");
    }

    public void buildEnd() {
        file.setEnd("</content>");  
    }

    public MyFile getResult() {
        return file;
    }
}

public class TxtFileBuilder implements FileBuilder{

    private MyFile file = new MyFile();;
   
    public void buildHead() {
        file.setHead("this it the txt file head"); 
    }

    public void buildContent() {
        file.setContent("this it the txt file content");
    }

    public void buildEnd() {
        file.setEnd("this it the txt file end");  
    }

    public MyFile getResult() {
        return file;
    }
}

 

      最后是测试代码:

 

public void test(){
    FileBuilder builder = new XmlFileBuilder();
    FileDirector director = new FileDirector(builder);
    MyFile file = director.construct();
    //省略了使用对象的代码
}

 

      看上面的代码,我们可以通过替换builder的实现来创建不同的对象,对象的创建过程得到了非常好的隐藏,并且不会暴露未创建完的对象。

 

      作为开发者,你一定使用过JDK提供的工具类StringBuilder或StringBuffer,事实上StringBuilder和StringBuffer使用的正是建造者模式。

 


       更多精彩原创文章请关注笔者的原创博客:http://www.coolfancy.com

0
0
分享到:
评论

相关推荐

    设计模式之建造者Builder模式

    **建造者模式(Builder Pattern)**是软件设计模式中的一种,属于创建型模式。它将复杂对象的构建过程与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式通常用于那些需要大量构造参数的对象,通过...

    Java设计模式-建造者模式详解

    Java设计模式-建造者模式详解 Java设计模式-建造者模式详解将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。生成器模式(Builder)是使用多个“小型”工厂来最终创建出一个完整对象。...

    69-Java设计模式之建造者 Builder1

    建造者模式(Builder Pattern)是Java设计模式中的一种,它属于创建型模式,主要用于构建复杂的对象。这种模式将对象的创建过程与表示分离,使得同样的创建过程可以创建不同的表示。在实际开发中,当我们需要创建的...

    设计模式——建造者模式

    建造者模式是一种结构型设计模式,它允许我们分步骤创建复杂对象,而无需暴露构建过程的内部细节。这种模式在Java编程中非常常见,尤其是在处理需要多种构建方式或需要隔离对象构造过程的场景。 建造者模式的核心...

    Java 设计模式-建造者模式(Builder)Android讲解

    建造者模式(Builder)是Java设计模式中的一种创建型模式,它允许我们分步骤构建复杂的对象,而无需暴露其构造过程。在Android开发中,这种模式尤其有用,因为Android组件如Activity、Fragment等的初始化过程通常...

    Java设计模式:Builder模式应用案例[借鉴].pdf

    Builder模式是一种常用的软件设计模式,它允许我们分步骤构建复杂对象,使得创建过程更加清晰、易于理解,并且能够保持代码的整洁。在Java编程中,Builder模式尤其适用于那些具有大量可选参数的对象创建。 在提供的...

    设计模式之建造者模式代码示例

    建造者模式(Builder Pattern)是软件工程中一种用于创建对象的抽象工厂方法,它将复杂的构建过程分解为一系列步骤,使得构建过程可以独立于其表示进行。这种模式允许客户端使用相同的构建过程创建不同表现形式的...

    Java设计模式:Builder模式应用案例[整理].pdf

    Builder模式是一种设计模式,主要用来解决复杂对象的构建问题,特别是在对象的构造过程中涉及大量的参数时。在Java编程中,Builder模式提供了一种更加灵活、结构化的创建对象的方式,避免了构造函数的过度膨胀和...

    java设计模式-建造者模式(Builder Pattern)

    在Java中,建造者模式(Builder Pattern)是一种创建型设计模式,它允许你分步骤地构建一个复杂对象。这个模式通过将构建过程和表示过程分离,使得同样的构建过程可以创建不同的表示。建造者模式特别适合用于创建...

    java 建造者模式代码

    建造者模式(Builder Pattern)是创建型设计模式,它将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式也被称为导演模式,因为建造者就像电影导演,指导演员(即具体建造者)...

    java23种设计模式详解+源码(绝对详解)

    - 建造者模式(Builder):将复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。 - 原型模式(Prototype):通过复制已有对象来创建新对象。 2. 结构型模式(Structural Patterns): - 代理...

    java 建造者模式

    建造者模式(Builder Pattern)是Java设计模式中的创建型模式之一,它允许我们分步骤创建复杂的对象,通过将构造过程与表示分离,使得同样的构造过程可以创建不同的表示。这种模式通常用于那些具有多种构建方式或者...

    java设计模式【之】建造者模式【源码】【场景:车辆组装】

    java设计模式【之】建造者模式【源码】【场景:车辆组装】 将复杂的对象构建,与对象的使用进行分离 用户只需要通过简单流程即可创建出对象 方法调用顺序,步骤的不同实现 优点:封装性号,创建和使用分离,扩展性...

    Java建造者模式源码

    Java建造者模式是一种设计模式,属于创建型模式,它的主要目的是通过隔离对象的构建过程和其表示,使得构造复杂对象的过程更加灵活。这种模式通常在需要创建对象的多个部分,并且这些部分可能需要以特定顺序组合时...

    JAVA设计模式(建造模式)_视频

    Java设计模式中的建造模式,又称为构造者模式,是一种用于对象构建的创建型设计模式。在软件工程中,当我们需要创建复杂对象时,通常会遇到一个问题:这些对象的构造过程非常繁琐,涉及到多个步骤,而每个步骤都有...

    讲故事,学(Java)设计模式-建造者模式Java开发Ja

    建造者模式,是Java设计模式中的重要组成部分,它在软件工程中扮演着构造复杂对象的角色。这个模式的主要目的是将对象的构建过程与表示分离,使得同样的构建过程可以创建不同的表示。通过使用建造者模式,我们可以...

    设计模式之建造者模式

    在Java的23种设计模式中,建造者模式是一个非常实用且重要的模式。 建造者模式通常包含四个角色:产品角色(Product)、抽象建造者角色(Builder)、具体建造者角色(Concrete Builder)以及导演角色(Director)。...

    《Java设计模式》课后答案-刘伟.rar

    创建型设计模式如单例(Singleton)、工厂方法(Factory Method)、抽象工厂(Abstract Factory)、建造者(Builder)和原型(Prototype),它们主要关注对象的创建过程,使得代码更加灵活且易于扩展。 结构型设计...

    23种设计模式的java实现-Builder

    在Java中,23种设计模式被广泛接受并分为三大类:创建型、结构型和行为型。Builder设计模式是创建型模式之一,主要解决复杂对象的构建问题,使得构建过程与表示分离。 Builder模式的核心思想是将一个复杂对象的构建...

Global site tag (gtag.js) - Google Analytics