Android设计模式之建造者模式builder

简介: 版权声明:本文为博主原创文章,转载请标明出处。 https://blog.csdn.net/lyhhj/article/details/49300237 今天小编来说一下Android中的一种设计模式--建造者模式Builder绪论:      那么对于Android初级来说,Builder设计模式可能在我们开发中用过的很少,但是我们可能见过,我们经常用的AlterDialog.Builder就是一种建造者模式。
版权声明:本文为博主原创文章,转载请标明出处。 https://blog.csdn.net/lyhhj/article/details/49300237

今天小编来说一下Android中的一种设计模式--建造者模式Builder

绪论:      

那么对于Android初级来说,Builder设计模式可能在我们开发中用过的很少,但是我们可能见过,我们经常用的AlterDialog.Builder就是一种建造者模式。那么到底什么是建造者模式呢?下面我们来看看它的标准定义:

定义:

将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示,同时可以分步的构造每一部分。
看起来比较抽象,也不知道具体是什么意思?下面我举一个例子,通过代码来看看什么是建造者模式

举例:

package com;

/**
 * Created by Hankkin on 15/10/21.
 */
public class ImageBean {
    private int id; //图片id
    private String path;    //图片路径
    private long size;  //图片大小
    private String type;    //图片类型

    public ImageBean() {
    }

    public ImageBean(int id, String path, long size, String type) {
        this.id = id;
        this.path = path;
        this.size = size;
        this.type = type;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getPath() {
        return path;
    }

    public void setPath(String path) {
        this.path = path;
    }

    public long getSize() {
        return size;
    }

    public void setSize(long size) {
        this.size = size;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }
}
我们定义了一个ImageBean实体,里面包含id、path、size、type属性,其中还包含空的构造方法和一个包含参数的构造。这样我们在声明这个实体的时候可以给这个实体赋值。
ImageBean ib = new ImageBean(1,"xxxx","54321","jpg");
实体的参数个数少点还好,我们能记住构造的参数,如果这个实体有N个参数呢?我们怎样知道参数的顺序呢?代码的可读性并不高,如果不是你自己写的,别人根本看不懂,即便是自己写的,时间长了的话恐怕我们也都忘了。那么Builder模式就可以解决这种情况。我们可以给ImageBean建立一个Builder:
package com;

/**
 * Created by Hankkin on 15/10/21.
 */
public class ImageBean {
    private int id; //图片id
    private String path;    //图片路径
    private long size;  //图片大小
    private String type;    //图片类型

    public ImageBean() {
    }

    public ImageBean(Builder builder) {
        this.id = builder.id;
        this.path = builder.path;
        this.size = builder.size;
        this.type = builder.type;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getPath() {
        return path;
    }

    public void setPath(String path) {
        this.path = path;
    }

    public long getSize() {
        return size;
    }

    public void setSize(long size) {
        this.size = size;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }
    
    public static class Builder{
        private int id;
        private String path;
        private long size;
        private String type;
        
        public Builder id(int id){
            this.id = id;
            return this;
        }
        
        public Builder path(String path){
            this.path = path;
            return this;
        }
        public Builder size(long size){
            this.size = size;
            return this;
        }
        public Builder type(String type){
            this.type = type;
            return this;
        }
        
        public ImageBean build(){
            return new ImageBean(this);
        }
    }
}

ImageBean.Builder builder = new ImageBean.Builder();
ImageBean ib = builder.id(11).path("xxx").size(1111).type("jpg").build();



可以看到ImageBean的构造参数改成了这个builder,然后定义了一个和ImageBean一样的Builder,返回值都是builder对象。这就是定义里面说的构造和表示分离,构造是ImageBean中来构造,而显示则在Builder中显示。也就是分布构造每一部分。
以上只是builder设计模式的一种用法

总结:

在以下情况使用Build模式:

1 当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。

2 当构造过程必须允许被构造的对象有不同的表示时。

3 Builder模式要解决的也正是这样的问题:

  当我们要创建的对象很复杂的时候(通常是由很多其他的对象组合而成),

  我们要复杂对象的创建过程和这个对象的表示(展示)分离开来,

  这样做的好处就是通过一步步的进行复杂对象的构建,

  由于在每一步的构造过程中可以引入参数,使得经过相同的步骤创建最后得到的对象的展示不一样。




相关文章
|
3月前
|
设计模式 Java 机器人
Java设计模式-建造者模式
建造者(Builder)模式指将一个产品的内部表象与产品的生成过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象。它是把对象的构建和表述分离。
40 0
Java设计模式-建造者模式
|
3月前
|
设计模式
设计模式 | 建造者模式
设计模式 | 建造者模式
36 0
|
3月前
|
设计模式 Go 开发工具
Golang设计模式——04建造者模式
Golang设计模式——04建造者模式
23 0
|
6天前
|
设计模式 Java
小谈设计模式(14)—建造者模式
小谈设计模式(14)—建造者模式
|
30天前
|
设计模式 Java
设计模式之建造者模式
设计模式之建造者模式
|
1月前
|
设计模式 算法 程序员
【设计模式】建造者模式
【设计模式】建造者模式
|
2月前
|
设计模式 Java C++
设计模式-建造者模式
设计模式-建造者模式
32 4
|
2月前
|
设计模式 安全 Java
浅谈设计模式 - 建造者模式(十七)
浅谈设计模式 - 建造者模式(十七)
34 1
|
3月前
|
设计模式 存储 前端开发
【设计模式】之建造者模式
建造者模式是一种创建型设计模式,它将复杂对象的构建过程与其表示分离,使得同样的构造过程可以创建不同的表示。在前端开发中,可以使用建造者模式来构建复杂的表单、UI组件等。该模式的优点是使代码更加可读、可维护,并且允许根据需要自由组合构建步骤和配置选项。然而,使用建造者模式会增加代码量,并且在对象较少或者构建过程简单时可能显得繁琐。
50 0
【设计模式】之建造者模式
|
4月前
|
设计模式
二十三种设计模式全面解析-建造者模式:构建完美对象的秘密武器
二十三种设计模式全面解析-建造者模式:构建完美对象的秘密武器