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月前
|
设计模式 算法
设计模式--建造者模式 builder
这篇文章通过一个电脑购买的例子,详细解释了建造者模式的四个角色(产品类、抽象构建者、实体构建类和指导者类),并提供了相应的代码实现,阐述了建造者模式在设计复杂对象时的应用和优势。
设计模式--建造者模式 builder
|
1月前
|
设计模式 JavaScript Java
Java设计模式:建造者模式详解
建造者模式是一种创建型设计模式,通过将复杂对象的构建过程与表示分离,使得相同的构建过程可以创建不同的表示。本文详细介绍了建造者模式的原理、背景、应用场景及实际Demo,帮助读者更好地理解和应用这一模式。
|
3月前
|
设计模式 算法 Java
Java设计模式-建造者模式(6)
Java设计模式-建造者模式(6)
|
4月前
|
设计模式 XML 存储
【四】设计模式~~~创建型模式~~~建造者模式(Java)
文章详细介绍了建造者模式(Builder Pattern),这是一种创建型设计模式,用于将复杂对象的构建与其表示分离,允许分步骤创建一个复杂的对象而无需指定其内部的具体构造细节。通过定义抽象建造者、具体建造者、指挥者和产品角色,建造者模式允许通过相同的构建过程创建不同的产品表示,提高了系统的灵活性和扩展性。
|
5月前
|
设计模式 JavaScript
js设计模式【详解】—— 建造者模式
js设计模式【详解】—— 建造者模式
59 0
|
6月前
|
设计模式
设计模式-05建造者模式(Builder Pattern)
设计模式-05建造者模式(Builder Pattern)
|
6月前
|
设计模式 算法 索引
程序技术好文:设计模式之美:Builder(生成器)
程序技术好文:设计模式之美:Builder(生成器)
|
6月前
|
设计模式 Java
Java设计模式:建造者模式之经典与流式的三种实现(四)
Java设计模式:建造者模式之经典与流式的三种实现(四)
|
6月前
|
设计模式 Java
Java设计模式之建造者模式详解
Java设计模式之建造者模式详解
|
6月前
|
设计模式 Java
设计模式之建造者模式
设计模式之建造者模式