Какой принцип работы в Shared Preferences?

Если SharedPreferences.Editor это интерфейс, то как мы тогда делаем объект editor?

SharedPreferences sharedPreferences = getSharedPreferences(SHARED_PREFS, MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
// some code
editor.apply();

Ответы (1 шт):

Автор решения: Vadik

Рассмотрим такой пример, пусть у вас есть интерфейс Animal и два класса, которые имплементируют этот интерфейс:

interface Animal {}

class Cat implements Animal {}

class Dog implements Animal {}

Кроме этого, предположим, есть класс-фабрика Animals для создания экземпляров животных:

class Animals {
    static Animal getInstance(String type) {
        switch (type) {
            case "cat":
                return new Cat();
            case "dog":
                return new Dog();
            default:
                throw new UnsupportedOperationException();
        }
    }
}

Теперь, когда вы создаете животных через фабрику, то вы можете и не знать, какими именно конкретными классами вы оперируете. Вы только видите, что создали какого-то Animal и работаете с ним, как с Animal:

Animal animal = Animals.getInstance("cat");

Примерно то же самое и с SharedPreferences.

→ Ссылка