Android设计模式——Builder(建造者)模式
2024-08-31 10:25:05
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的源码如下:
待续…………
最新文章
- 软件工程-构建之法 WordCount小程序 统计文件中字符串个数,单词个数,词频,行数
- Terra Vista 6.2
- Inventory of the materials to teach you how to query a date certain combination of dimensions
- ptmalloc2源码解析初探
- iOS日常工作之常用宏定义大全
- Machine Learning – 第2周(Linear Regression with Multiple Variables、Octave/Matlab Tutorial)
- linux下tomcat服务的启动、关闭与错误跟踪
- 权限管理之基于ACL的实现:自定义JSTL函数实现即时认证
- 相对路径与绝对路径构造file对象
- GNOME界面简单使用
- 学习一之UML类图
- A Boring Problem UVALive - 7676 (二项式定理+前缀和)
- TCP粘包问题
- [leetcode]20. Valid Parentheses有效括号序列
- Unity3D的主要类图 N年前的版本
- ThreadLocal变量
- python pstats ,profile 性能分析
- C#通过XElement写入XML文件
- 2018.09.14 bzoj2982: combination(Lucas定理)
- Chapter 3 Phenomenon——4