Какой шаблон проектирования использовать для многократного использования представлений? - PullRequest
0 голосов
/ 11 июля 2020

Предположим, у меня есть представление, сконфигурированное следующим образом:

func configure(viewModel: HelloViewModel) {
    name.text = viewModel.name 
    surname.text = viewModel.surname 
    checkboxImage.image = viewModel.isMember ? UIImage(named: "member") : UIImage(named: "not-member")
}

HellowViewModel - это простая структура, а не протокол. Теперь мне нужно использовать это представление, но со следующим изменением: изображение checkboxImage должно отличаться на основе viewModel.isMember (а не member или not-member). Это означает, что теперь я должен изменить свой метод configure, который имеет плохой дизайн. Но как я могу решить свою задачу, не меняя слишком много? Может быть, есть шаблоны для решения подобных проблем? Сам я должен обработать это следующим образом:

Создать протокол для этого представления. Он будет принят в методе configure.

protocol HelloPresentable {
    var name: String { get }
    var surname: String { get }
    var image: UIImage { get }
}

Мой метод configure должен принимать этот протокол. И тогда он будет многоразовым. Но в настоящее время он принимает структуру, а не протокол. Итак, как решить проблему в этом случае?

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