java - 在android中创建类似glide和picasso的类结构

标签 java android oop

我想创建这样的类结构:

Glide.with(context).load("url").into(imageView);

问题:-

public class Slider{

    private static Activity context;
    private static int Duration = 3000;

    public static void setContext(Activity context) {
        Slider.context = context;
    }

    public static void setDuration(Duration duration) {
        Slider.Duration = duration;
    }
}
// In Activity
Slider.setContext(this);
  • 我将所有方法和必填字段声明为静态的,但它不起作用。

  • 我尝试使用 setter 方法,但它只允许一个 setter。此类不允许我使用第二个 setter。

要求:

Slider.setContext(this).setDuration(3000);

我需要类似 glide 的类和方法结构和 picasso图书馆和一些方法是强制性的。

最佳答案

为此你需要使用 builder 模式

public class Slider
{
    private static Activity context;
    private static int Duration = 3000;

    private Slider(SliderBuilder builder) {
        this.context = builder.context;
        this.Duration = builder.Duration;
    }

    //All getter, and NO setter to provde immutability
    public String getContext() {
        return context;
    }
    public String getDuration() {
        return Duration;
    }

    public static SliderBuilder with(Activity context){
        return new SliderBuilder(context);
    }

    public static class SliderBuilder
    {
        private static Activity context;
        private static int Duration = 3000;

        public SliderBuilder(Activity context) {
            this.context = context;
        }
        public SliderBuilder duration(int Duration) {
            this.Duration = Duration;
            return this;
        }
        //Return the finally constructed Slider object
        public Slider build() {
            Slider slider =  new Slider(this);
            validateSliderObject(slider);
            return slider;
        }
        private void validateSliderObject(Slider slider) {
            //Do some basic validations to check
        }
    }
}

更好地解释 here

编辑

How to use

Slider.with(this).duration(3000).build();

关于java - 在android中创建类似glide和picasso的类结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58110143/

相关文章:

java - 正则表达式:匹配通配符后跟可变长度的数字

java - 如何告诉 gson 在 Java 中将哪些字段添加到 json 中?

Android & Facebook SDK : decoding pictures from/me/picture graph call

java - 返回后用结果进行单元测试断言;

java - 为什么允许使用子类的构造函数实例化父类对象?

java - JAX-B 正在编码一切

java - 如何使用 simple-xml 库解析 xml,其中数据是列表并由不同类型的列表组成?

android - 使用太多 Fragment 有缺点吗?

c# - 你什么时候、为什么要封课?

c# - 这是使用多态性的正确方法吗