`

易学设计模式五 建造模式(Builder)

阅读更多
遇到多个构造器参数(Constructor Parameters)时要考虑用构建器(Builder)

//营养素
public class NutritionFacts {
	
	private final int servingSize;
	private final int servings;
	private final int calories; //卡路里
	private final int fat;		//脂肪
	private final int sodium;	//钠
	private final int carbohydrate; //碳水化合物
	
	// 构造器,静态内部类
	public static class Builder {
		
		 // 必要参数
        private final int servingSize;
        private final int servings;
        // 可选参数
        private int calories = 0;
        private int fat = 0;
        private int carbohydrate = 0;
        private int sodium = 0;
        
        public Builder(int servingSize, int servings) {
        	this.servingSize = servingSize;
        	this.servings = servings;
        }
        
        public Builder calories(int calories) {
        	this.calories = calories;
        	return this;
        }
        
        public Builder sodium(int sodium) {
        	this.sodium = sodium;
        	return this;
        }
        
        public Builder fat(int fat) {
        	this.fat = fat;
        	return this;
        }
        
        public Builder carbohydrate(int carbohydrate) {
        	this.carbohydrate = carbohydrate;
        	return this;
        }
        //最后返回构建成功的对象
        public NutritionFacts build() {
        	return new NutritionFacts(this);
        }
	}
	//私有构造子
	private NutritionFacts(Builder builder) {
		this.servingSize = builder.servingSize;
		this.servings = builder.servings;
		this.calories = builder.calories;
		this.fat = builder.fat;
		this.sodium = builder.sodium;
		this.carbohydrate = builder.carbohydrate;
	}
	
	@Override
    public String toString() {
        // TODO Auto-generated method stub
        return "["+
                "servingSize:"+servingSize+
                ",servings:"+servings+
                ",calories:"+calories+
                ",fat:"+fat+
                ",sodium:"+sodium+
                ",carbohydrate:"+carbohydrate+
                "]";
    }
	
	public static void main(String [] args) {
		NutritionFacts cocaCola = new NutritionFacts.Builder(240, 8)
			.calories(100).sodium(35).carbohydrate(27).build();
		
		System.out.println(cocaCola.toString());
	}
}


输出结果:

[servingSize:240,servings:8,calories:100,fat:0,sodium:35,carbohydrate:27]

参考:http://www.cnblogs.com/xwdreamer/archive/2012/06/06/2538496.html
分享到:
评论

相关推荐

    易学设计模式

    《易学设计模式》这本书是面向软件开发人员的一本实用指南,旨在帮助读者轻松掌握设计模式这一核心的软件工程概念。设计模式是经过时间和实践验证的解决方案,它们针对在软件设计过程中经常遇到的问题提供了一套标准...

    易学设计模式源码光盘

    1. **创建型模式**:这类模式关注对象的创建过程,如单例模式(Singleton)、工厂方法模式(Factory Method)、抽象工厂模式(Abstract Factory)、建造者模式(Builder)和原型模式(Prototype)。它们提供了一种...

    易学_设计模式_郭志学

    《易学_设计模式_郭志学》是针对Java编程领域的一本专注于设计模式的书籍。设计模式是软件工程中的重要概念,它是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。这些模式代表了在特定上下文中...

    一个Java书籍《易学设计模式》全部源码.rar

    《Java易学设计模式》全书的随书源码,每一个章节一个压缩包,分别为:工厂模式、命令模式、组合模式、模板方法模式、工厂方法模式例子、状态模式例子、迭代器模式、解释器模式、享元模式、桥模式、装饰模式、代理...

    《易学设计模式》源码

    《易学设计模式》源码是一份珍贵的学习资源,它基于JAVA语言,为读者提供了书中讲解的各种设计模式的实际实现。设计模式是软件工程中的重要概念,它们是解决常见问题的可复用解决方案,有助于提高代码的可读性、可...

    java-易学设计模式

    1. 创建型模式:这类模式主要关注对象的创建过程,如单例模式(Singleton)、工厂方法模式(Factory Method)、抽象工厂模式(Abstract Factory)、建造者模式(Builder)和原型模式(Prototype)。单例模式确保一个...

    [源代码] 《易学 设计模式》 随书源代码

    《易学 设计模式》 郭志学 编著 随书源代码 ☆ 章节清单:☆ 第01章 欲速则不达:了解设计模式 第02章 磨刀不误砍柴工:UML语言概述 第03章 术业有专攻:简单工厂模式 (SimpleFactory) 第04章 精益求精:工厂方法...

    设计模式例子文档,简单易学

    1. 创建型模式:这类模式主要关注对象的创建过程,例如单例模式(Singleton)、工厂方法模式(Factory Method)、抽象工厂模式(Abstract Factory)、建造者模式(Builder)和原型模式(Prototype)。它们提供了一种...

    Java《易学设计模式》随书源码.rar

    Java《易学设计模式》随书源代码,书中介绍了多种JAva模式的方法和使用,比如简单工厂模式、工厂方法模式例子、状态模式例子、迭代器模式、解释器模式、命令模式、模板方法模式、享元模式、桥模式、代理模式、适配器...

    介绍设计模式的代码

    创建型模式涉及对象的创建,如单例(Singleton)、工厂方法(Factory Method)和建造者(Builder)。结构型模式关注如何将类和对象组合成更大的结构,如适配器(Adapter)、装饰器(Decorator)和代理(Proxy)。...

    avascript设计模式.pdf

    JavaScript的设计理念是简洁易学,即便是编程新手也能用它编写实用的代码。随着程序员技能的提升,JavaScript的能力也在增长,可以帮助编写更加复杂和高效的程序。它能够模仿其他编程语言的模式和惯例,同时形成了...

    Java《易学设计模式》全书源代码

    摘要:Java源码,书籍源码,随书源码,设计模式,Java电子书 运行环境:Java/Eclipse

    head first 设计模式(中文版) part3 总共三部分

    资源比较大,只好分来传输,否则传不上去。设计模式中的经典书籍,强烈建议看这本书来学习设计模式。gof的设计模式太抽象了,这本书非常易学。

    Python常用设计模式源码

    Python作为一门易读、易学的编程语言,也广泛应用了各种设计模式。本资源“Python常用设计模式源码”包含了一些在Python编程中常见的设计模式实现。 1. **单例模式**:确保一个类只有一个实例,并提供全局访问点。...

    精通python设计模式

    《精通Python设计模式》这本书是针对那些希望提升Python编程技能,特别是想要深入理解软件设计原则和模式的专业人士所准备的。作为运维高级工程师,掌握设计模式不仅能够优化代码结构,提高代码可读性和可维护性,还...

    PowerBuilder8.0 开发工具下载

    5. **Visual IDE**:PowerBuilder提供了一个直观的集成开发环境,便于拖放式设计和调试,加速开发过程。 6. **.NET Integration**:PowerBuilder 8.0开始支持.NET Framework,使得开发者可以利用.NET库和组件,与...

    Power Builder 7.0_manual_PowerBuilder_

    - **脚本语言**:PowerScript 是 PowerBuilder 的内置脚本语言,它简单易学,且与数据窗口和其他 PowerBuilder 对象紧密集成。 - **事件驱动编程**:PowerBuilder 应用程序基于事件驱动模型,用户界面组件(如按钮...

    FilterBuilder过滤器

    `FilterBuilder`采用`AdminLTE.css`,能够获得更加专业和现代的界面设计,提升用户体验。 `FilterBuilder`的核心功能可能包括以下几点: 1. **条件选择**:用户可以选择不同的过滤条件,如等于、不等于、大于、...

    boaPHP是一款灵活易用的配置式PHP框架,MVC设计模式,完全面向对象,易学易用、便于快速开发

    boaPHP是一款免费开源、灵活易用的配置式PHP框架,MVC设计模式,完全面向对象,易学易用、便于快速开发

Global site tag (gtag.js) - Google Analytics