Предположим, у меня есть представление, сконфигурированное следующим образом:
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
должен принимать этот протокол. И тогда он будет многоразовым. Но в настоящее время он принимает структуру, а не протокол. Итак, как решить проблему в этом случае?