protocol PersonViewModel { var title: String {get} var birthday: String {get} func doSomeWork() } class PersonView: UIView { private var titleLabel: UILabel! private var birthdayLabel: UILabel! private var workButton: UIButton! private var viewModel: BobViewModel init(viewModel: PersonViewModel) { self.viewModel = viewModel super.init(frame: .zero) setupView() } private func setupView() { titleLabel.text = viewModel.title birthdayLabel.text = viewModel.birthday } func workButtonTapped() { viewModel.doSomeWork() } }