我想创建这样的类结构:
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);
最佳答案
为此你需要使用 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/