Android设计模式之Builder模式详解
时间:2019-03-31
本文章向大家介绍Android设计模式之Builder模式详解,主要包括Android设计模式之Builder模式详解使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
Builder模式使用链式结构创建复杂对象,将过程与结果分开,创建过程中可以自行组合。
使用场景
一个对象,不同组合,不同顺序生成不同的结果
优点:封装性更规范,程序调用不用关系内部细节,注重结果即可
缺点:如果builder对象过多,会加大内存消耗
public class TabInfoBean { private int count;//Tab的个数 必选 private int currentTab;//默认选中的tab 必选 private String[] tabText;//文字必选 private int normalResId;//可选 private int selectResId;//可选 private int normalTextColor;//可选 private int selectTextColor;//可选 private int normalTextSizeSp;//可选 private int selectTextSizeSp;//可选 private TabInfoBean(TabInfoBuilder builder) { this.tabText = builder.tabText; this.count = builder.count; this.currentTab = builder.currentTab; this.normalResId = builder.normalResId; this.selectResId = builder.selectResId; this.normalTextColor = builder.normalTextColor; this.selectTextColor = builder.selectTextColor; this.normalTextSizeSp = builder.normalTextSizeSp; this.selectTextSizeSp = builder.selectTextSizeSp; } public int getCount() { return count; } public void setCount(int count) { this.count = count; } public int getCurrentTab() { return currentTab; } public void setCurrentTab(int currentTab) { this.currentTab = currentTab; } public int getNormalResId() { return normalResId; } public void setNormalResId(int normalResId) { this.normalResId = normalResId; } public int getSelectResId() { return selectResId; } public void setSelectResId(int selectResId) { this.selectResId = selectResId; } public int getNormalTextColor() { return normalTextColor; } public void setNormalTextColor(int normalTextColor) { this.normalTextColor = normalTextColor; } public int getSelectTextColor() { return selectTextColor; } public void setSelectTextColor(int selectTextColor) { this.selectTextColor = selectTextColor; } public String[] getTabText() { return tabText; } public void setTabText(String[] tabText) { this.tabText = tabText; } public int getNormalTextSizeSp() { return normalTextSizeSp; } public void setNormalTextSizeSp(int normalTextSizeSp) { this.normalTextSizeSp = normalTextSizeSp; } public int getSelectTextSizeSp() { return selectTextSizeSp; } public void setSelectTextSizeSp(int selectTextSizeSp) { this.selectTextSizeSp = selectTextSizeSp; } public static class TabInfoBuilder { private int count; private int currentTab; private String[] tabText; private int normalResId; private int selectResId; private int normalTextColor; private int selectTextColor; private int normalTextSizeSp;//可选 private int selectTextSizeSp;//可选 public TabInfoBuilder(String[] tabText, int count, int currentTab) { this.tabText = tabText; this.count = count; this.currentTab = currentTab; } public TabInfoBuilder setNormalResId(int normalResId) { this.normalResId = normalResId; return this; } public TabInfoBuilder setSelectResId(int selectResId) { this.selectResId = selectResId; return this; } public TabInfoBuilder setNormalTextColor(int normalTextColor) { this.normalTextColor = normalTextColor; return this; } public TabInfoBuilder setSelectTextColor(int selectTextColor) { this.selectTextColor = selectTextColor; return this; } public TabInfoBuilder setNormalTextSizeSp(int size) { this.normalTextSizeSp = size; return this; } public TabInfoBuilder setSelectTextSizeSp(int size) { this.selectTextSizeSp = size; return this; } public TabInfoBean build() { return new TabInfoBean(this); } } }
调用方式
String[] name={"我","是","谁"}; TabInfoBean.TabInfoBuilder tabInfoBuilder=new TabInfoBean.TabInfoBuilder(name,5,0); /* TabInfoBean tabInfoBean=tabInfoBuilder .setNormalResId() .setSelectResId() .setNormalTextColor() .setSelectTextColor() .setNormalTextSizeSp() .setSelectTextSizeSp() .build();*/
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- 3分钟短文 | Laravel 内3种数据校验的写法,你喜欢哪一个?
- 纯JavaScript实现的MQTT智能门锁
- 3分钟短文 | Laravel 灵活地获取当前请求的路由地址
- 云原生安全 | docker容器逃逸
- 字节数组X中存放着 0~F共16个十六进制数,请将这些数以十六进制形式显示在屏幕上。
- ubuntu 16安装asp.net
- MYSQL Rewriter plugin 我那什么拯救你,垃圾系统
- 不使用华为om工具如何手工部署openGauss主从流复制环境
- 比较两个等长的字符串,若相同,则输出Match!,若不同,则输出No Match!
- 逻辑回归算法原理及实现
- Python链表详细笔记
- 26个你需要学习的Firefox配置技巧,改进体验和加快浏览器响应速度
- Softmax算法原理及实现
- Android Activity 活动的生命周期
- Android学习笔记,不断更新