建造者模式之构建器
事实上建造者模式就是类中创建一个内部类 然后外部类构造函数传递的是一个内部类的对像。然后在内部类中的set和get方法中返回值是一个内部类对像,这样就能非常好的实现建造者模式。
事实上他就像StringBuilder中的append:string a=“a”。a.append("wo").append("shi").append("shei")。
实现一直不断的追加字符串。
样例例如以下:
package com.blueZhang.innerDemo5; public class Test { public static void main(String[] args) { // StringBuffer ss = new StringBuffer("abc"); // ss.append("123").append("000").append("xxx");// --->"abc123000xxx" // System.out.println(ss.toString()); QQ.Builder qb = new QQ.Builder("10000", "888888"); qb.setAge(12).setSex("男");// .setEmail("abc@199.com"); QQ qq = new QQ(qb); System.out.println(qq); QQ q = qb.build(); System.out.println(q); } } class QQ { String qqNo; String pass; String sex; int age; String email; // 构建器 public static class Builder { String qqNo; String pass; String sex; int age; String email; // 要求qq号和password必填,其它选填 public Builder(String qqNo, String pass) { this.qqNo = qqNo; this.pass = pass; } public Builder setAge(int age) { this.age = age; return this; } public Builder setSex(String sex) { this.sex = sex; return this; } public Builder setEmail(String email) { this.email = email; return this; } // 2 public QQ build() { return new QQ(this); } } public QQ(Builder b) { this.qqNo = b.qqNo; this.pass = b.pass; this.sex = b.sex; this.age = b.age; this.email = b.email; } @Override public String toString() { return qqNo + pass + age + sex + email; } }