1. 程式人生 > 其它 >設計模式--建造者模式

設計模式--建造者模式

類圖

原始碼

package com.bulid;

public class Computer {

    private String cpu;//必須
    private String ram;//必須
    private int usbCount;//可選
    private String keyboard;//可選
    private String display;//可選

    private Computer(Builder builder) {
        this.cpu = builder.cpu;
        this.ram = builder.ram;
        
this.usbCount = builder.usbCount; this.keyboard = builder.keyboard; this.display = builder.display; } public static class Builder { private String cpu;//必須 private String ram;//必須 private int usbCount;//可選 private String keyboard;//可選 private String display;//
可選 public Builder(String cpu, String ram) { this.cpu = cpu; this.ram = ram; } public Builder setUsbCount(int usbCount) { this.usbCount = usbCount; return this; } public Builder setKeyboard(String keyboard) {
this.keyboard = keyboard; return this; } public Builder setDisplay(String display) { this.display = display; return this; } public Computer builder() { return new Computer(this); } } @Override public String toString() { final StringBuilder sb = new StringBuilder("Computer{"); sb.append("cpu='").append(cpu).append('\''); sb.append(", ram='").append(ram).append('\''); sb.append(", usbCount=").append(usbCount); sb.append(", keyboard='").append(keyboard).append('\''); sb.append(", display='").append(display).append('\''); sb.append('}'); return sb.toString(); } public static void main(String[] args) { // 建造正模式 Computer computer = new Computer.Builder("因特爾", "三星") .setDisplay("三星24寸") .setKeyboard("羅技") .setUsbCount(2) .builder(); System.out.println(computer); } }

測試截圖