您好,登錄后才能下訂單哦!
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();*/
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。