Android 디자인 모드의 (2)----Builder 모드

4747 단어
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();*/
                    
    

    github 코드 주소

    좋은 웹페이지 즐겨찾기