美文网首页
Android设计模式之建造者模式

Android设计模式之建造者模式

作者: TangBuzhi | 来源:发表于2017-10-16 13:29 被阅读0次

    建造者模式

    1.定义:

    将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建出不同的表示。

    2.使用场景:

    • 相同的方法,不同的执行顺序,产生不同的事件结果时;
    • 当初始化一个对象特别复杂,如参数多,且很多参数都具有默认值时;
    • 产品类非常复杂,或产品类中的调用顺序不同产生了不同的作用。

    3.UML图

    4.详解:

    Builder模式是一步一步创建一个复杂对象的创建型模式,它允许用户在不知道内部构建细节的情况下,可以更精细的控制对象的构造流程。该模式是为了将构建复杂对象的过程与它的部件解耦,使得构建过程和部件的表示分离开来。
    下面用代码举例阐述,首先是产品类与产品的组装接口:

    public static class Computer {
            private String mCpu;
            private String mMainBoard;
            private String mRam;
    
            public void setmCpu(String mCpu) {
                this.mCpu = mCpu;
            }
    
            public void setmMainBoard(String mMainBoard) {
                this.mMainBoard = mMainBoard;
            }
    
            public void setmRam(String mRam) {
                this.mRam = mRam;
            }
    
            @Override
            public String toString() {
                return mCpu + "==" + mMainBoard + "==" + mRam;
            }
        }
    
    public interface ComputerBuilder {
            void buildCpu(String cpu);
    
            void buildMainBoard(String mainBoard);
    
            void buildRam(String ram);
    
            Computer create();
        }
    

    然后是具体的组装实现类:

        public static class ConcreteBuilder implements ComputerBuilder {
            private Computer computer = new Computer();
    
            @Override
            public void buildCpu(String cpu) {
                computer.setmCpu(cpu);
            }
    
            @Override
            public void buildMainBoard(String mainBoard) {
                computer.setmMainBoard(mainBoard);
            }
    
            @Override
            public void buildRam(String ram) {
                computer.setmRam(ram);
            }
    
            @Override
            public Computer create() {
                return computer;
            }
        }
    

    接着就是关键的组装类了,即产品组装过程:

    public static class Director {
            private ComputerBuilder builder;
    
            public Director(ComputerBuilder builder) {
                this.builder = builder;
            }
    
            public Computer createComputer(String cpu, String mainBoard, String ram) {
                builder.buildCpu(cpu);
                builder.buildMainBoard(mainBoard);
                builder.buildRam(ram);
                return builder.create();
            }
        }
    

    测试代码:

    public static void main(String[] args) {
            ComputerBuilder builder = new ConcreteBuilder();
            Director cBuilder = new Director(builder);
            Computer computer = cBuilder.createComputer("i7-6700", "酷睿i7", "骁龙800");
            System.out.println(computer.toString());//输出结果:i7-6700==酷睿i7==骁龙800
        }
    

    5.代码托管地址

    建造者模式

    相关文章

      网友评论

          本文标题:Android设计模式之建造者模式

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