java 建造者模式
2016-04-30 23:50
471 查看
建造者模式(Bulider)
工厂模式提供的是创建单个类的模式,而建造者模式则是将各种产品集中起来进行管理,用来创建复合对象(指某个类具有不同的属性),讲一个复杂的对象与他的表示分离,使得同样的构件过程可以创建不同的表示。适用性
1. 当创建一个复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。
2. 当构造过程必须允许被构造的对象有不同的表示时。
参与者:
* Builder
为创建一个Product对象的各个部件制定抽象接口
* ConcreteBuilder
事项Builder的接口一构造和装配该产品的各个部件
定义并明确它所创建的表示
提供一个检索产品的接口
* Drector
构造一个使用Builder接口的对象
* Product
表示被构造的浮躁对象,ConcreteBuilder创建该产品的内部表示并定义它的装配过程
包含定义组成部件的类,包括将这些部件装配成最终产品的接口
目的是将很多功能集成到一个类里,这个类可以创造出复杂的东西,而且对建造的对象来说,可以很容易增加功能(个人理解:弱耦合)
使用起来在java中,如果一个对象有多个参数,重叠构造器(即重载多个构造器通过不同的参数列表),但是如果参数很长,会很难维护。
所以可以像这样做:
public class NutritionFacts{ private final int servingSize; private final int servings; private final int calories; private final int fat; private final int sodium; //Na private final int carbohydrate; //nested builder public static class Builder{ private final int servingSize; private final int servings; public Builder(int servingSize, int servings) { this.servingSize = servingSize; this.servings = servings; } public Builder calories(int val) { calories = val; return this; } public Builder fat(int val) { fat = val; return this; } public Builder carbohydrate(int val) { carbohydrate = val; return this; } public Builder sodium(int val){ sodium = val; return this; } public NutritionFacts build(){ return new NutritionFacts(this); } } private NutritionFacts(Builder builder){ servingSize = builder.servingSize; servings = builder.servings; calories = builder.calories; fat = builder.fat; sodium = builder.sodium; carbohydrate = builder.carbohydrate; } @Override public String toString(){ return "NutrionFacts[servingSize:" + servingSize + ",servings:" + servings + ",fat:" + fat + ",calories:" + calories + ",sodium:" +sodium + ",carbohydrate:" + carbohydrate + "]"; } public static void main(Stirng args[]){ NutritionFacts nf = new NutritionFacts.Builder(5,10).calories(1).fat(2).carbohydrate(3).build(); System.out.println(nf); } }
有关Bulider模式,就先学到这里,设计模式主要是解决一些典型的问题,在开发中要有意识的去使用,熟能生巧,多用多想,融会贯通才是王道。
相关文章推荐
- Java设计模式之建造者模式(Builder模式)介绍
- Builder模式
- 创建型模式之建造者(Builder)模式
- 一篇讲得非常好的build模式的解释文章
- 设计模式_Builder模式
- 设计模式之Builder模式
- 设计模式(4)--Builder 建造者(构建器)
- 只关心零件的Buider
- Android开发中无处不在的设计模式——Builder模式
- 遇到多个构造器参数考虑用构建器(Builder)
- Android源码分析之Builder模式
- 简单三步通过Builder模式来实现Android顶部导航TopBar
- java中的builder模式
- 设计模式:Builder模式(多个构造器参数时可显著改善可读性)
- Builder(建造者)模式
- C++ 设计模式
- 创建对象之Builder模式
- 设计模式系列5-建造者模式
- java设计模式(创建型)之生成器模式
- 设计模式-建造模式(Builder)