Какой шаблон проектирования можно использовать вместо класса Manager? - PullRequest
0 голосов
/ 29 февраля 2020

У меня есть класс с именем PhotoManager, это синглтон. Этот класс содержит такие методы, как:

fun downloadPhoto(context: Context, photoUrl: String) { }

fun savePhotoUri(context: Context, uri: Uri) { } 

fun setWallpaper(context: Context, photoUri: Uri) { }

У меня также есть некоторые другие классы с постфиксом Manager в своих именах. Например, SuggestionManager, который получает некоторые входные данные и возвращает предложения, основанные на пользователях.

Я хотел бы провести рефакторинг этих двух классов, но я не знаю, какой шаблон использовать. Это может быть шаблон Фасад?

Ответы [ 3 ]

1 голос
/ 01 марта 2020

Почему существует PhotoManager? Есть ли у PhotoManager какое-либо состояние? Если нет, то просто избавься от этого. В Kotlin у вас могут быть функции вне классов.

Если у него есть состояние, выясните, зачем вам нужен класс, и это поможет вам найти лучшее имя.

" PhotoManager "- это дурное имя, потому что никто не думает, что" мне нужно что-то, чтобы управлять моими фотографиями "... и если кто-то действительно думает так, то ваш класс не звучит так, как он сделал бы работу. Как потребитель вашего класса, что это за мне ?

1 голос
/ 01 марта 2020

При работе с изображениями из удаленного источника я бы предложил следовать шаблону репозитория. Это даст вам гораздо больше гибкости и будет легче расширять и поддерживать. Для Android шаблон описан Google в Руководстве по архитектуре приложения . Для реализации существует множество технологий, поэтому проведите некоторое исследование, прежде чем приступить к кодированию.

Это должно охватывать первые два метода. Что касается остальных, я не думаю, что понимаю, что они делают достаточно хорошо, чтобы предложить решение.

1 голос
/ 01 марта 2020

Если вы соблазнились позвонить своим классам руководителям и часто использовали синглтоны, в большинстве случаев это означало бы просто отсутствие понимания шаблонов проектирования и того, какую проблему они решают.

Подобные вопросы уже задавались много раз и я просто чувствую, что на этом этапе вас могут вдохновить некоторые темы ниже.

Классы именования - Как не называть все « Manager»?

Как избежать… Помощник или… Менеджерские классы

Беседы о чистом коде - «Global State and Singletons»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...