美文网首页设计模式
Builder设计模式——化妆师

Builder设计模式——化妆师

作者: 0ur | 来源:发表于2019-01-07 22:33 被阅读0次
    cover

    创建型模式之一

    定义:将一个复杂的对象的构建和它的表示分开,使得同样的构建过程可以创建不同的表示。

    使用场景:
    1,相同的方法,不同的执行顺序,产生的事件结果不一样。
    2,多个部件和零件,都可以装配到一个对象中,运行产生的结果又不相同。
    3,某类非常复杂,参数过多并且很多参数都有默认值。或者某类中的调用顺序不同产生的作用不同。

    优点:
    1,将配置从目标类隔离出来,避免了过多的setter()方法,容易扩展。
    2,良好的封装性,让调用者不必知道内部组成的细节

    缺点:会产生多余的Builder对象。

    简单实现:

    /**
     * 美女类
     */
    public class Belle {
    
        //隔离霜
        private String mSunScreen;
        //粉底
        private String mFoundation;
        //眼影
        private String EyeShadows;
        //口红
        private String mLmipstick;
    
        public Belle(Builder builder) {
            this.mSunScreen = builder.mSunScreen;
            this.mFoundation = builder.mFoundation;
            this.EyeShadows = builder.mEyeShadows;
            this.mLmipstick = builder.mLmipstick;
    
        }
    
        @Override
        public String toString() {
            return "Belle{" +
                    "mSunScreen='" + mSunScreen + '\'' +
                    ", mFoundation='" + mFoundation + '\'' +
                    ", EyeShadows='" + EyeShadows + '\'' +
                    ", mLmipstick='" + mLmipstick + '\'' +
                    '}';
        }
    
        public static class Builder {
    
            private String mSunScreen = "SunScreen";
            private String mFoundation = "Foundation";
            private String mEyeShadows = "EyeShadows";
            private String mLmipstick = "Lmipstick";
    
            public Builder() {
            }
    
            /**
             * 隔离霜
             *
             * @param sunScreen
             */
            public Builder setSunScreen(String sunScreen) {
                this.mSunScreen = sunScreen;
                return this;
            }
    
    
            /***
             * 设置粉底
             * @param foundation
             */
            public Builder setFoundation(String foundation) {
                this.mFoundation = foundation;
                return this;
            }
    
    
            /**
             * 设置眼影
             *
             * @param eyeshadows
             */
            public Builder setEyeShadows(String eyeshadows) {
                this.mEyeShadows = eyeshadows;
                return this;
            }
    
    
            /**
             * 设置口红
             *
             * @param lmipstick
             */
            public Builder setLmipstick(String lmipstick) {
                this.mLmipstick = lmipstick;
                return this;
            }
    
    
            public Belle build() {
                return new Belle(this);
            }
    
        }
    }
    
    
    如有出入,往大佬扶正,谢谢!!!

    相关文章

      网友评论

        本文标题:Builder设计模式——化妆师

        本文链接:https://www.haomeiwen.com/subject/xufmrqtx.html