Builder模式
来源:互联网 发布:php mysql 中文乱码 编辑:程序博客网 时间:2024/06/05 15:06
在概念描述之前,先看如下一小段代码,在Android开发中非常常见的。
AlertDialog dialog = new AlertDialog.Builder(this) .setTitle("title") .setMessage("message") .setPositiveButton("", null) .create();
使用这种方式设置对话框的Title、Message等是不是非常的方便,这里采用的就是Builder模式。
再看如下的一个实例
public class Info { private String name; private int age; private Info() { } private Info(String name) { this.name = name; } private Info(int age) { this.age = age; } private Info(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; }}
是不是构造函数很多,这个类目前只有两个属性,如果属性多,构造函数将会更加复杂。可能你会说可以通过set方法来设置对应的属性,但是通过set将比较繁琐了 。
通过Builder模式来实现如下
public class Info { private String name; private int age; private Info(Builder builder) { this.name = builder.name; this.age = builder.age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } static class Builder { private String name; private int age; public Builder name(String name) { this.name = name; return this; } public Builder age(int age) { this.age = age; return this; } public Info build() { return new Info(this); } }}
现在看起来与AlertDialog的实现基本一致。
现在可以给它一个定义
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
0 0
- builder 模式
- Builder模式
- Builder 模式
- Builder模式
- builder模式
- builder模式
- Builder模式
- builder模式
- Builder模式
- Builder 模式
- Builder 模式
- Builder模式
- Builder模式
- builder模式
- builder模式
- builder模式
- Builder模式
- Builder模式
- 生活随笔
- hbase-1.3.1安装部署
- 怎样使一个Android应用不被杀死?
- Hive的基本增删改查代码
- Java设计模式详解之门面模式1
- Builder模式
- vue-cli 脚手架项目-package.json
- Composer 安装东西遇到github需要token怎么办
- Android深入四大组件(四)广播的注册、发送和接收过程
- js实现的CSS color 十六进制与RGB值的转换
- RecyclerView 数据不一致 Inconsistency detected
- guava 源码之 Lists transform的坑
- Understanding Android Core: Looper, Handler, and HandlerThread
- leetcode167Two Sum II