設計模式--建造者模式
阿新 • • 發佈:2021-12-14
類圖
原始碼
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); } }