Android设计模式之Builder模式详解
Builder模式使用链式结构创建复杂对象,将过程与结果分开,创建过程中可以自行组合。
使用场景
一个对象,不同组合,不同顺序生成不同的结果
优点:封装性更规范,程序调用不用关系内部细节,注重结果即可
缺点:如果builder对象过多,会加大内存消耗
publicclassTabInfoBean{
privateintcount;//Tab的个数必选
privateintcurrentTab;//默认选中的tab必选
privateString[]tabText;//文字必选
privateintnormalResId;//可选
privateintselectResId;//可选
privateintnormalTextColor;//可选
privateintselectTextColor;//可选
privateintnormalTextSizeSp;//可选
privateintselectTextSizeSp;//可选
privateTabInfoBean(TabInfoBuilderbuilder){
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;
}
publicintgetCount(){
returncount;
}
publicvoidsetCount(intcount){
this.count=count;
}
publicintgetCurrentTab(){
returncurrentTab;
}
publicvoidsetCurrentTab(intcurrentTab){
this.currentTab=currentTab;
}
publicintgetNormalResId(){
returnnormalResId;
}
publicvoidsetNormalResId(intnormalResId){
this.normalResId=normalResId;
}
publicintgetSelectResId(){
returnselectResId;
}
publicvoidsetSelectResId(intselectResId){
this.selectResId=selectResId;
}
publicintgetNormalTextColor(){
returnnormalTextColor;
}
publicvoidsetNormalTextColor(intnormalTextColor){
this.normalTextColor=normalTextColor;
}
publicintgetSelectTextColor(){
returnselectTextColor;
}
publicvoidsetSelectTextColor(intselectTextColor){
this.selectTextColor=selectTextColor;
}
publicString[]getTabText(){
returntabText;
}
publicvoidsetTabText(String[]tabText){
this.tabText=tabText;
}
publicintgetNormalTextSizeSp(){
returnnormalTextSizeSp;
}
publicvoidsetNormalTextSizeSp(intnormalTextSizeSp){
this.normalTextSizeSp=normalTextSizeSp;
}
publicintgetSelectTextSizeSp(){
returnselectTextSizeSp;
}
publicvoidsetSelectTextSizeSp(intselectTextSizeSp){
this.selectTextSizeSp=selectTextSizeSp;
}
publicstaticclassTabInfoBuilder{
privateintcount;
privateintcurrentTab;
privateString[]tabText;
privateintnormalResId;
privateintselectResId;
privateintnormalTextColor;
privateintselectTextColor;
privateintnormalTextSizeSp;//可选
privateintselectTextSizeSp;//可选
publicTabInfoBuilder(String[]tabText,intcount,intcurrentTab){
this.tabText=tabText;
this.count=count;
this.currentTab=currentTab;
}
publicTabInfoBuildersetNormalResId(intnormalResId){
this.normalResId=normalResId;
returnthis;
}
publicTabInfoBuildersetSelectResId(intselectResId){
this.selectResId=selectResId;
returnthis;
}
publicTabInfoBuildersetNormalTextColor(intnormalTextColor){
this.normalTextColor=normalTextColor;
returnthis;
}
publicTabInfoBuildersetSelectTextColor(intselectTextColor){
this.selectTextColor=selectTextColor;
returnthis;
}
publicTabInfoBuildersetNormalTextSizeSp(intsize){
this.normalTextSizeSp=size;
returnthis;
}
publicTabInfoBuildersetSelectTextSizeSp(intsize){
this.selectTextSizeSp=size;
returnthis;
}
publicTabInfoBeanbuild(){
returnnewTabInfoBean(this);
}
}
}
调用方式
String[]name={"我","是","谁"};
TabInfoBean.TabInfoBuildertabInfoBuilder=newTabInfoBean.TabInfoBuilder(name,5,0);
/*TabInfoBeantabInfoBean=tabInfoBuilder
.setNormalResId()
.setSelectResId()
.setNormalTextColor()
.setSelectTextColor()
.setNormalTextSizeSp()
.setSelectTextSizeSp()
.build();*/
github代码地址
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。