Android设计模式之建造者模式

2017-10-16  本文已影响0人  TangBuzhi

建造者模式

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.代码托管地址

建造者模式

上一篇下一篇

猜你喜欢

热点阅读