类图
源码
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); } }
测试截图