spring 與設計模式(建立型)之Builder模式
阿新 • • 發佈:2019-02-04
一、前言
將一個複雜的物件構建與它的表示分離,使得同樣的構建過程可以建立不同的表示,實現構建物件的過程與部件解耦。生活中許多這樣的例子,例如大學4年的學習,每一年的學習成績會最終影響4後的績點。電腦汽車的裝配等
二、UML
物件的構建:
package com.bitch.design.create.builder; /** * 下面說明如何建立一個整合usb Type-A,Type-B,Type-C介面的電腦 * @author chenhaipeng * @version 1.0 * @date 2015/10/31 22:35 */ public interface Builder { //Type-A void buildPartA(); //Type-B void buildPartB(); //Type-C void buildPartC(); //返回裝配結果,裝配過程由Director來控制實現 Product getResult(); }
package com.bitch.design.create.builder; /** * @author chenhaipeng * @version 1.0 * @date 2015/10/31 22:35 */ public class ConCreateBuilder implements Builder { Part partA,partB,partC; public ConCreateBuilder() { partA = new PartA(); partB = new PartB(); partC = new PartC(); } @Override public void buildPartA() { partA.build(); } @Override public void buildPartB() { partB.build(); } @Override public void buildPartC() { partC.build(); } @Override public Product getResult() { Product product = new ConCreateProduct(partA,partB,partC); System.out.println("完成最終成品..............."); return product; } }
物件表示:
測試:package com.bitch.design.create.builder; /** * @author chenhaipeng * @version 1.0 * @date 2015/11/01 1:45 */ public class Director { private Builder builder; public Director(Builder builder) { this.builder = builder; } /** * 封裝內部細節,組裝過程 */ public void construct(){ System.out.println("裝配開始..........."); builder.buildPartA(); builder.buildPartB(); builder.buildPartC(); System.out.println("裝配完成..........."); } }
package com.bitch.design.create.builder;
import org.junit.Test;
/**
* @author chenhaipeng
* @version 1.0
* @date 2015/11/01 2:09
*/
public class MainTest {
@Test
public void builder() {
//構建與表示控制分離
//建立構建器
Builder builder = new ConCreateBuilder();
//表示控制器
Director director = new Director(builder);
director.construct();
//返回最終成品
Product product = builder.getResult();
}
}