Android设计模式之建造者模式

建造者模式

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

建造者模式

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 没有人买车会只买一个轮胎或者方向盘,大家买的都是一辆包含轮胎、方向盘和发动机等多个部件的完整汽车。如何将这些部件组...
    justCode_阅读 5,893评论 1 6
  • 设计模式汇总 一、基础知识 1. 设计模式概述 定义:设计模式(Design Pattern)是一套被反复使用、多...
    MinoyJet阅读 9,399评论 1 15
  • 创建型模式 抽象工厂模式(abstract facroty) 3.1模式动机 在工厂方法模式中具体工厂负责生产具体...
    僚机KK阅读 4,082评论 0 2
  • 昨天整个一上午心跳都在加速,这在日常是不多的见的--当然了,昨天不同于日常。老公从外地回来了,而且不是短暂回来探家...
    9c80a2f86c0f阅读 1,324评论 0 0
  • 曾经,多少人以为抓住了一只蝉就拥有了整个夏天。如今,多少人以为把所喜欢的东西分享朋友圈、加入收藏夹就实现了真正拥有...
    李纪超阅读 4,316评论 1 8

友情链接更多精彩内容