Создайте структуру классов, как Glide и Picasso в Android - PullRequest
1 голос
/ 26 сентября 2019

Я хочу создать структуру класса, например:

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);
  • Я объявил все методы и обязательные поля статическими, но он не может работать.

  • Я пытался использовать метод установки, но он допускает только один метод установки. Этот класс не позволяет мне использовать второй метод установки.

Требование:

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

Мне нужна структура класса и метода, например glide и picasso библиотека и некоторые методы являются обязательными.

1 Ответ

0 голосов
/ 26 сентября 2019

Вам нужно использовать Pattern 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
        }
    }
}

Лучше объяснено здесь

РЕДАКТИРОВАТЬ

Как пользоваться

Slider.with(this).duration(3000).build();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...