建造者模式之构建器
2015-08-10 08:00
344 查看
其实建造者模式就是类中创建一个内部类 然后外部类构造函数传递的是一个内部类的对像,然后在内部类中的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号和密码必填,其他选填 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; } }
相关文章推荐
- 编译zlib遇到的问题 没有找到match686.obj
- JS中数组Array的用法{转载}
- SqlServer 数据库读写分离【转】
- 人物角色群体攻击判定(一)
- (4.1.29.1)Android 操作SQLite基本用法之SQLiteOpenHelper
- 线段树之ZOJ1610 Count the Colors
- Num 26 : HDOJ2187 : 悼念512汶川大地震遇难同胞——老人是真饿了 [ 贪心 ]
- poj 3254 种玉米 状压dp
- Lucas定理 大组合数取模
- 修改HTML5 input placeholder默认颜色
- 将pdf转换成html的方法
- 阿里巴巴2014校招笔试题-2013年9月14日
- 常用字符串Hash函数
- 矩阵hash + KMP - UVA 12886 The Big Painting
- 数据库事务操作+数据库事务隔离级别
- iOS 多线程
- 从网络上下载文件到本地
- select()函数以及FD_ZERO、FD_SET、FD_CLR、FD_ISSET
- SparkException: Failed to get broadcast (TorrentBroadcast)
- leetcode 111 —— Minimum Depth of Binary Tree