`

Java设计模式之Builder模式:例子

阅读更多

定义一个文件生成器。文件的类:MyFile 分为三个部分,也就是说有三个属性:FileHead,FileContent,FileEnd。
FileHead定义如下:

package create.builder1;
public class FileHead {
 private String value;
 public String getValue() {
  return value;
 }
 public void setValue(String value) {
  this.value = value;
 }
}
FileContent定义如下:
package create.builder1;
public class FileContent {
 private String value;
 public String getValue() {
  return value;
 }
 public void setValue(String value) {
  this.value = value;
 }
}
FileEnd 定义如下:
package create.builder1;
public class FileEnd {
 private String value;
 public String getValue() {
  return value;
 }
 public void setValue(String value) {
  this.value = value;
 }
}
现在定义MyFile:
package create.builder1;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
public class MyFile {
 private FileHead fhead;
 private FileContent fcontent;
 private FileEnd fend;
  
 public FileContent getFcontent() {
  return fcontent;
 }
 public void setFcontent(FileContent fcontent) {
  this.fcontent = fcontent;
 }
 public FileEnd getFend() {
  return fend;
 }
 public void setFend(FileEnd fend) {
  this.fend = fend;
 }
 public FileHead getFhead() {
  return fhead;
 }
 public void setFhead(FileHead fhead) {
  this.fhead = fhead;
 }
 public void write(String path) throws IOException{
  File f=new File(path);
  FileWriter fw=new FileWriter(f);
  PrintWriter out=new PrintWriter(fw);
  out.println(fhead.getValue());
  out.println(fcontent.getValue());
  out.println(fend.getValue());
  out.close();  
 }
}
定义Builder,我给她取名字为FileBuilder:
package create.builder1;
public interface FileBuilder {
  void buildHead();
  void buildContent();
  void buildEnd();
  MyFile getResult();
}
该定义Director了,名字为:FileDirector:
package create.builder1;
public class FileDirector {
    private FileBuilder filebuilder;
    public FileDirector(FileBuilder filebuilder){
     this.filebuilder=filebuilder;
    }
    public void construct(){
     filebuilder.buildHead();
     filebuilder.buildContent();
     filebuilder.buildEnd();
    }
}
现在到了定义具体Builder的时候了,定义两个,一个是生成txt文件的,一个生成xml文件
TxtBuilder:
package create.builder1;
public class TxtBuilder implements FileBuilder{
 private FileHead fh=new FileHead();
 private FileContent fc=new FileContent();;
 private FileEnd fe=new FileEnd();
 public void buildHead() {
  // TODO Auto-generated method stub
  fh.setValue("This is text file");
 }
 public void buildContent() {
  // TODO Auto-generated method stub
  fc.setValue("this is my content");
 }
 public void buildEnd() {
  // TODO Auto-generated method stub
  fe.setValue("this is the end of the file");
 }
 public MyFile getResult() {
  // TODO Auto-generated method stub
  MyFile my=new MyFile();
  my.setFcontent(fc);
  my.setFhead(fh);
  my.setFend(fe);
  return my;
 }
}
XmlBuilder
package create.builder1;
public class XmlBuilder implements FileBuilder {
    private FileHead fh=new FileHead();
    private FileContent fc=new FileContent();
    private FileEnd fe=new FileEnd();
   
 public void buildHead() {
  // TODO Auto-generated method stub
  fh.setValue("<?xml version=\"1.0\" encoding=\"GB2312\"?><content>"); 
 }
 public void buildContent() {
  // TODO Auto-generated method stub
  fc.setValue("<test>asdasd</test>");
 }
 public void buildEnd() {
  // TODO Auto-generated method stub
       fe.setValue("</content>");  
 }
 public MyFile getResult() {
  // TODO Auto-generated method stub
  MyFile my=new MyFile();
  my.setFcontent(fc);
  my.setFhead(fh);
  my.setFend(fe);
  return my;
 }
}
Demo如下:
package create.builder1;
import java.io.IOException;
public class Demo {
 public static void main(String[] args) throws IOException {
  // TODO Auto-generated method stub
        FileBuilder fb=new TxtBuilder();
        FileDirector fd=new FileDirector(fb);
       
        fd.construct();
        MyFile my=fb.getResult();
        my.write("D:/test.txt");
       
        FileBuilder fbxml=new XmlBuilder();
        FileDirector fdxml=new FileDirector(fbxml);
        fdxml.construct();
        MyFile myxml=fbxml.getResult();
        myxml.write("D:/test1.xml");
 }
}
在Demo里可以看到Builder模式的特点。
<!-- -->
分享到:
评论

相关推荐

    Java设计模式之禅

    《Java设计模式之禅》是一本深入浅出讲解设计模式的书籍,书中不仅包含23种经典设计模式的案例,还详细介绍了设计模式背后的思想和原则,适合初学者以及对设计模式有一定了解的程序员阅读。本书旨在帮助读者理解如何...

    java设计模式之Builder&Decorator

    Java设计模式中的Builder模式和Decorator模式是两种重要的设计模式,它们在软件开发中起到优化代码结构、提高代码复用性和灵活性的作用。 1. 建造者模式(Builder) 建造者模式是一种创建型设计模式,它的主要目的...

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

    Builder设计模式是创建型模式之一,主要解决复杂对象的构建问题,使得构建过程与表示分离。 Builder模式的核心思想是将一个复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。这种模式通常应用于...

    《Java设计模式》课后习题参考答案-刘伟(20180723).pdf

    此外,为了确保参考资料的权威性,建议读者查阅原书《Java设计模式》以获得更加详尽的解释和说明。如果有任何意见或建议,可以通过提供的电子邮箱与作者联系。在学习设计模式的过程中,理解每一个模式的意图、结构、...

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

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

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

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

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

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

    java设计模式程序源代码

    Java设计模式是软件工程中的一种最佳实践,它提供了一种在特定情况下解决常见问题的模板。这些模式在软件开发中被广泛使用,因为它们能够使代码更可读、可维护和可扩展。在这个名为"java设计模式程序源代码"的压缩包...

    java 23种设计模式及具体例子

    java 设计模式 java 设计模式是软件工程的基石,它们被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式可以让代码更容易被他人理解、保证代码可靠性、提高代码的重用性。 一、设计模式...

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

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

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

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

    java设计模式详解,java design pattern

    Java设计模式详解涉及到23种设计模式,这些设计模式可以根据其目的和范围被划分为三大类:创建型模式(Creational Patterns)、结构型模式(Structural Patterns)和行为型模式(Behavioral Patterns)。下面将详细...

    builder设计模式源码

    Builder设计模式是一种软件设计模式,它允许我们分步骤构建复杂对象,通过将构造过程与对象的表示分离,使得相同的构造过程可以创建不同的表示。在Java或者其他面向对象编程语言中,Builder模式经常被用来提高代码的...

    Java 23种设计模式及例子

    ### Java 23种设计模式详解 #### 一、设计模式概述 设计模式是一种编码实践,旨在通过标准化的解决方案来解决常见的软件设计问题。这些模式不仅有助于提高代码的可读性和可维护性,还能增强软件的灵活性和扩展性。...

    java经典设计模式(中文版)

    《Java经典设计模式》中文版是一本深入浅出地介绍设计模式的书籍,它以Head First的方式呈现,使得复杂的概念变得生动易懂。设计模式是软件工程中的宝贵经验总结,是解决常见问题的有效模板,可以帮助开发者写出更...

    Java【23种设计模式】速查文档,含例子

    Java设计模式是软件开发中的重要概念,它是一种在特定情境下解决问题的经验总结,可以提高代码的可重用性、灵活性和可维护性。这23种设计模式是面向对象编程中广泛采用的经典模式,涵盖了创建型、结构型和行为型三大...

    java设计模式趣味版.ppt

    Java设计模式是软件开发中的一种最佳实践,它们是解决常见问题的经验总结,旨在提高代码的可重用性、可读性和可维护性。本讲座主要介绍了三种创建型设计模式:工厂模式、工厂方法模式和建造者模式,并通过趣味性的...

    闫宏Java设计模式源码

    Java设计模式是软件开发中的一种重要思想,它总结了在解决特定问题时,代码组织和重用的最佳实践。阎宏的《Java设计模式》是一部详细阐述这些模式的著作,旨在帮助开发者更好地理解和应用设计模式。这本书通过源码...

    Java 24种设计模式

    通过以上对Java设计模式中创建型模式和结构型模式的详细介绍,我们可以看到这些模式是如何帮助我们在实际编程过程中解决问题的。无论是创建对象,还是对现有对象进行扩展或组合,设计模式都能提供一种优雅的解决方案...

    从追MM谈Java的23种设计模式

    标题《从追MM谈Java的23种设计模式》独特地将Java设计模式与“追女孩”的生活场景相结合,通过一系列生动的例子来解释各种设计模式的概念和使用场景。在IT行业中,这种以生活场景来比喻技术概念的方式,能帮助人们更...

Global site tag (gtag.js) - Google Analytics