Android设计模式——Builder(建造者)模式
1.建造者模式是一步一步创建一个复杂对象的创建模式。该模式是为了将构建复杂对象的过程和他的部件解耦,使得构建过程和部件表示隔离开。
2.Bulider模式的定义是:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的对象。
3.Builder的使用场景:
<1>相同的方法,不同的执行顺序,产生不同的事件结果。
<2>多个部件或零件,都可以装配到一个对象中,但是产生的运行结果又不相同时。
<3> 产品类非常复杂,或产品类中的调用顺序不同产生了不同的作用。
<4>初始化一个对象特别复杂,如参数很多,且很多参数具有默认值时。
4.Builder模式的代码示例:
/**
* Builder 建造者模式
*/
public class Person {
private String name;
private String sex;
private int age; /**
* 构造方法,传入builder对象
* @param builder 对象
*/
public Person(Builder builder) {
this.name = builder.name;
this.sex = builder.sex;
this.age = builder.age;
} /**
*
* get set 方法
*/
public String getName() {
return name;
} public String getSex() {
return sex;
} public int getAge() {
return age;
} public void setName(String name) {
this.name = name;
} public void setSex(String sex) {
this.sex = sex;
} public void setAge(int age) {
this.age = age;
} /**
*
* 静态内部类 Builder类 包含所有Person属性。
*/
public static class Builder{
private String name;
private String sex;
private int age; public Builder name(String name){
this.name=name;
return this;
}
public Builder sex(String sex){
this.sex=sex;
return this;
}
public Builder age(int age){
this.age=age;
return this;
} public Person builder(){
return new Person(this); }
} }
通过Builder,可以创建不同参数的Person对象
Person.Builder builder=new Person.Builder();
Person person0=builder.name("张三").builder();
Person person1=builder.name("张三").sex("男").builder();
Person person2=builder.name("张三").sex("男").age(20).builder();
5.在Android中我们常见的Builder模式是Alertdialog。Alertdialog的源码如下:


待续…………
Android设计模式——Builder(建造者)模式的更多相关文章
- 一天一个设计模式——Builder建造者模式
一.模式说明 在现实世界中,当我们要构造一个大型工程时(建一个大楼),通常的做法是先建造工程的每个独立部分,然后再逐步构造完成(先打地基,再搭框架,最后逐层累造).在程序设计领域,构造一个复杂的类时( ...
- C++设计模式-Builder建造者模式
作用:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示. Builder模式和AbstractFactory模式在功能上很相似,因为都是用来创建大的复杂的对象,它们的区别是:B ...
- Java设计模式之建造者模式(Builder)
前言: 最近一直在学习okHttp,也对其做了一些整理,okHttp和Retrofit结合大大加速我们的开发效率,源码里面采用了很多设计模式,今天我们来学习一下其中的设计模式之一建造者模式. 建造者模 ...
- C#设计模式(5)——建造者模式(Builder Pattern)
一.引言 在软件系统中,有时需要创建一个复杂对象,并且这个复杂对象由其各部分子对象通过一定的步骤组合而成.例如一个采购系统中,如果需要采购员去采购一批电脑时,在这个实际需求中,电脑就是一个复杂的对象, ...
- 乐在其中设计模式(C#) - 建造者模式(Builder Pattern)
原文:乐在其中设计模式(C#) - 建造者模式(Builder Pattern) [索引页][源码下载] 乐在其中设计模式(C#) - 建造者模式(Builder Pattern) 作者:webabc ...
- C#设计模式之四建造者模式(Builder Pattern)【创建型】
一.引言 今天我们要讲讲Builder模式,也就是建造者模式,当然也有叫生成器模式的,英文名称是Builder Pattern.在现实生活中,我们经常会遇到一些构成比较复杂的物品,比如:电脑,它就是一 ...
- 【GOF23设计模式】建造者模式
来源:http://www.bjsxt.com/ 一.[GOF23设计模式]建造者模式详解类图关系 建造飞船 package com.test.Builder; public class AirShi ...
- 折腾Java设计模式之建造者模式
博文原址:折腾Java设计模式之建造者模式 建造者模式 Separate the construction of a complex object from its representation, a ...
- Java 设计模式之建造者模式(四)
原文地址:Java 设计模式之建造者模式(四) 博客地址:http://www.extlight.com 一.前言 今天继续介绍 Java 设计模式中的创建型模式--建造者模式.上篇设计模式的主题为 ...
随机推荐
- DIV+CSS左右两列自适应高度的方法
我们在用DIV+CSS布局网页的时候,必然会遇到左右两列自适应高度的问题,就是左边列的背景会随着右边列内容的增加也相应的增加高度,下面就教大家DIV+CSS左右两列自适应高度的方法. 下面给出最终的效 ...
- 杭电 1021 Fibonacci Again
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1021 解题思路:根据之前发现斐波那契数列的规律,即为f(n)能被3整除当且仅当n能被4整除. 于是联想 ...
- (转)RabbitMQ学习之路由(java)
http://blog.csdn.net/zhu_tianwei/article/details/40887755 参考:http://blog.csdn.NET/lmj623565791/artic ...
- HTML 单击a标签 实现下载文件而不是浏览器打开预览
<a d ownload class="down" title="">
- WPF 创建用户控件并引用
项目源码地址:https://github.com/lizhiqiang0204/WpfControlLibrary.git 首先创建新项目->WPF用户控件库项目 在UserControl1. ...
- Javase范式
package Xwxx; import java.util.ArrayList; import java.util.Iterator; import java.util.function.IntBi ...
- SQL中group by的理解
1.group by A,B,C的分组顺序与汇总: group by A,B,C的分组顺序与order by A,B,C的排序一样.即先按A,如果A一样,则再按B,以此类推. 而数据将在最后指定的分组 ...
- DedeCMS用channelartlist调用顶级栏目及列表
这个标签全局都可使用,可以减少多次使用 {dede:arclist typeid=‘栏目ID’titlelen='60' row='10'}.除了宏标记外,{dede:channelartlist}是 ...
- 实验二:编写输出"Hello World!"
1.首先打开eclipse这个软件,新建Java项目,执行“文件→ 新建→Java项目 ”菜单命令,打开新建Java对话框,在项目名的编辑框中输入项目名编写输出"Hello World!”, ...
- HTTPie:一个不错的 HTTP 命令行客户端
转自:http://top.jobbole.com/9682/ HTTPie:一个不错的 HTTP 命令行客户端 HTTPie (读aych-tee-tee-pie)是一个 HTTP 的命令行客户端. ...