模式的使用是为了实现某种场景上的需要,在前面的建造模式里所演示的with实现方法就非常好的诠释了建造模式
那以下的实现就是一个良好的应用:
场景:图书馆需要记录不同的书籍,每种书籍都有不同的类型,平常来的大多数是小说,那么我们在创建一个对象的时候就可以默认书籍类型为小说类型,根据实际的情况看是否对书籍进行类别记录:
代码实现:
package com.family.admin.build;
enum BookType{
FICTION,
OTHER;
}
public class LibraryBook {
private BookType type;
private String bookName;
/**
* 封装,私有构造
* @param type
* @param bookName
*/
private LibraryBook(BookType type, String bookName) {
super();
this.type = type;
this.bookName = bookName;
}
public static class Builder {
private BookType type;
private String bookName;
public Builder withType(BookType type){
this.type = type;
return this;
}
public Builder withBookName(String bookName){
this.bookName = bookName;
return this;
}
public LibraryBook build(){
return new LibraryBook(type, bookName);
}
}
public static void main(String[] args) {
LibraryBook.Builder build = new LibraryBook.Builder();
// 默认不需要使用withType 来指定书籍类型,默认是小说类型
LibraryBook book = build.withBookName("war and peace").build();
}
}