`

Builder模式

阅读更多

Builder模式适合于属性比较多的对象,避免不停调用set方法进行属性注入。核心思想是在外部类中提供一个静态方法构建一个内部类的对象,再通过使用静态的内部类构建外部类对象。缺点是内部类和外部类几乎拥有相同的属性。

 

里面的关键点:

(1)外部类的builder方法创建内部类

(2)静态内部类

(3)内部类的append方法

(4)内部类的build方法,得到外部类的对象,构建完成

 

例子:

@Value
public final class StatisticsLoggerInfo {
    private final String description;
    private final Map<String, String> data = new TreeMap<String, String>();

    public StatisticsLoggerInfo(String description, Map<String, String> data) {
        this.description = description;
        this.data.putAll(data);
    }

    public static LoggerBuilder builder() {
        return new LoggerBuilder();
    }

    public static class LoggerBuilder {
        private String description;
        private Map<String, String> data = new TreeMap<String, String>();

        private LoggerBuilder() {

        }

        public LoggerBuilder append(String k, String v) {
            data.put(k, v);
            return this;
        }

        public LoggerBuilder description(String description) {
            this.description = description;
            return this;
        }

        public StatisticsLoggerInfo build() {
            return new StatisticsLoggerInfo(this.description, this.data);
        }
    }

    public String getDescription() {
        return description;
    }

    public Map<String, String> getData() {
        return Collections.unmodifiableMap(data);
    }
}

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics