Android模仿Retrofit的建造者模式

一、概述

  在Retrofit的框架中用的最多的是建造者模式,建造者模式对象与设置的值相分离层次结构更加清晰,在使用的时候通过链式调用赋值,层次清晰明了,避免了我们要new不多的对象需要构造多个构造函数,或者创建对象后一个个的赋值,非常的方便。下面我们也模仿一个建造者模式看看其神奇之处。

二、实例代码

  相关类介绍:

  1.Book.java建造者中用到的实体

  2.MyRetrofit.java建造者是在此类中实现的

  3.测试方法以及打印日志

  Book.java

package com.yw.rxjava3demo;

import android.app.Service;

import java.io.Serializable;

import io.reactivex.Observable;
import io.reactivex.Observer;

/**
 * create by yangwei
 * on 2020-02-21 18:08
 */
public class Book {
    private String id;
    private String name;

    public Book(String id, String name) {
        this.id = id;
        this.name = name;

    }

    public String getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

  MyRetrofit.java

package com.yw.rxjava3demo;

import java.util.List;

/**
 * 模仿Retrofit的建造者模式
 * create by yangwei
 * on 2020-02-26 11:15
 */
public class MyRetrofit {
    private String name;
    private int age;
    private List<Book> datas;

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

    public List<Book> getBooks() {
        return datas;
    }

    public MyRetrofit(String name, int age, List<Book> datas) {

        this.name = name;
        this.age = age;
        this.datas = datas;
    }

    public static final class Builder {
        private String name;
        private int age;
        private List<Book> datas;

        public Builder() {
        }

        public Builder setName(String name) {
            this.name = name;
            return this;
        }

        public Builder setAge(int age) {
            this.age = age;
            return this;
        }

        public Builder setList(List<Book> books) {
            this.datas = books;
            return this;
        }

        public MyRetrofit build() {
            return new MyRetrofit(this.name, this.age, this.datas);
        }
    }

}

  测试方法:

private void MyRetrofitBuildTest() {
        List<Book> datas = new ArrayList<>();
        datas.add(new Book("1", "《萌鸡小队》"));
        datas.add(new Book("2", "《小猪佩奇》"));
        MyRetrofit retrofit = new MyRetrofit.Builder()
                .setName("杨洛峋")
                .setAge(1)
                .setList(datas)
                .build();

        Log.e("姓名:", retrofit.getName());
        Log.e("年龄:", retrofit.getAge() + "");
        StringBuffer sb = new StringBuffer();
        for (Book book : retrofit.getBooks()) {
            sb.append(book.getName()).append(",");
        }
        Log.e("喜欢:", sb.toString() + "");

    }

  打印日志:通过建造者模式构建数据后会打印姓名、年龄、以及喜欢的动漫

2020-02-26 11:29:20.312 32103-32103/? E/姓名:: 杨洛峋
2020-02-26 11:29:20.312 32103-32103/? E/年龄:: 1
2020-02-26 11:29:20.312 32103-32103/? E/喜欢:: 《萌鸡小队》,《小猪佩奇》,

  ps:好了,本文比较简单,纯粹是因为retrofit框架,心血来潮模仿一个建造者模式

 

posted on 2020-02-26 11:36  飘杨......  阅读(353)  评论(0编辑  收藏  举报