首页 > 其他 > 详细

8、Builder 建造者模式 组装复杂的实例 创造型模式

时间:2020-07-21 12:49:02      阅读:141      评论:0      收藏:0      [点我收藏+]

1Builder

    使使

使

1 

2 

3 使

4 

2

技术分享图片


技术分享图片

Builder

package cn.design.create.builder;

/**
* @author lin
* @version 1.0
* @date 2020-07-20 14:15
* @Description TODO
*/
public interface Builder {

   void makeTitle(String title);

   void makeString(String str);

   void makeItems(String[] item);

   void close();
}

HtmlBuilder

package cn.design.create.builder;

import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;

/**
* @author lin
* @version 1.0
* @date 2020-07-20 15:58
* @Description TODO
*/
public class HtmlBuilder implements Builder {
   //
   private String filename;
   //PrintWriter
   private PrintWriter writer;

   @Override
   public void makeTitle(String title) {
       // HTML
       //
       filename = title + ".html";
       try {
           // PrintWriter
           writer = new PrintWriter(new FileWriter(filename));
      } catch (IOException e) {
           e.printStackTrace();
      }
       writer.println("<html><head><title>" + title + "</title></head><body>");
       //
       writer.println("<h1>" + title + "</h1>");
  }

   @Override
   public void makeString(String str) {
       // HTML
       //<p>
       writer.println("<h4>" + str + "</h4>");
  }

   @Override
   public void makeItems(String[] items) {
       // HTML
       writer.println("<ul>");
       //<ul><li>
       for (int i = 0; i < items.length; i++) {
           writer.println("<li>" + items[i] + "</1i>");
      }
       writer.println("</ul>");
  }

   @Override
   public void close() {
       //
       writer.println("</body></html>");
       //
       writer.close();
       //
  }

   public String getResult() {
       //
       //
       return filename;
  }
}

TextBuilder

package cn.design.create.builder;

/**
* @author lin
* @version 1.0
* @date 2020-07-20 15:53
* @Description TODO
*/
public class TextBuilder implements Builder {
   private StringBuffer buffer = new StringBuffer();

   //
   @Override
   public void makeTitle(String title) {
       //
       buffer.append("=========================\n"); //线
       //
       buffer.append("" + title + "\n");
  }

   @Override
   public void makeString(String str) {
       //.
       //
       buffer.append(" " + str + "\n");
  }

   @Override
   public void makeItems(String[] items) {
       //
       for (int i = 0; i < items.length; i++) {
           //.
           buffer.append("\t " + items[i] + "\n");
      }
  }

   @Override
   public void close() {
       //
       // 线
       buffer.append("========================\n");
  }

   public String getResult() {
       //
       //StringBufferString
       return buffer.toString();
  }
}

Director

package cn.design.create.builder;

/**
* @author lin
* @version 1.0
* @date 2020-07-20 14:18
* @Description TODO
*/
public class Director {
   private Builder builder;

   public Director(Builder builder) {
       //Builder
       //builder
       this.builder = builder;
  }

   public void construct() {
       //
       //
       builder.makeTitle("Greeting");
       //
       builder.makeString("");
       //
       builder.makeItems(new String[]{
               "",
               "",
      });
       //
       builder.makeString("");
       //
       builder.makeItems(new String[]{
               "",
               "",
               "",
      });
       //
       builder.close();
  }
}

BuilderMain

package cn.design.create.builder;

/**
* @author lin
* @version 1.0
* @date 2020-07-20 13:53
* @Description TODO
*/
public class BuilderMain {
   public static void main(String[] args) {
       if (args.length != 1) {
           usage();
           System.exit(0);
      }
       if (args[0].equals("plain")) {
           TextBuilder textbuilder = new TextBuilder();
           Director director = new Director(textbuilder);
           director.construct();
           String result = textbuilder.getResult();
           System.out.println(result);
      } else if (args[0].equals("html")) {
           HtmlBuilder htmlbuilder = new HtmlBuilder();
           Director director = new Director(htmlbuilder);
           director.construct();
           String filename = htmlbuilder.getResult();
           System.out.println(filename + "");
      } else {
           usage();
           System.exit(0);
      }
  }

   public static void usage() {
       System.out.println("Usage: java Main plain ");
       System.out.println("Usage: java Main html HTML");
  }

}

plain:

=========================
Greeting

 
 

 
 
 
========================

html:

技术分享图片

3Builder

技术分享图片


Builder ()

Builder( API )Builder Builder

ConcreteBuilder ()

ConcreteBuilderBuilder(API)ConcreteBuilderTextBuilderHTMLBui lder

Director ()

Director使Builder( API)ConcreteBuilderConcreteBuilderDirector BuilderDirector

Client(使)

使Builder Builder ClientMain

4

Template Method

BuilderDirector BuilderTemplate Method

Composite

BuilderComposite

Abstract Factory

BuilderAbstract Factory

Facade

BuilderDirector Builder( API)(construct)FacadeFacade( API)

5

便使Builderbuid()builderbuilder

    使Builder;

    使

6Mainargs

: 123 456 abc def

1. idea使:
   main   , 
   
2. 使:
  使, . javac XXX.java  java XXX abc def 123
  使,, javac -d . XXX.java  java cn.**.XXX 123 456

技术分享图片


javac -d . cn.fagejiang.Test.java
java cn.fagejiang.Test plain

 


技术分享图片                

 

圈~

 

● 扫码关注公众号,  转载请备注来源,和链接

 

8、Builder 建造者模式 组装复杂的实例 创造型模式

原文:https://www.cnblogs.com/naimao/p/13353493.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!