Скромний об'єкт () — шаблон проєктування, який дозволяє відокремити поведінку, що легко піддається тестуванню від поведінки, яка насилу піддається тестуванню..
Опис
Нехай, необхідно протестувати логіку, яка важко піддається тестування, наприклад, логіку графічного інтерфейсу. Такі дані складні тому, що важко писати тести, які можуть бачити зображення на екрані і перевіряти присутність відповідних елементів. Однак насправді поведінку інтерфейсу легко тестувати, оскільки просто необхідно перевірити правильність самих елементів відображення.
Ідея шаблону у тому щоб розділити логіку на два модулі: "скромний" модуль складний для тестування, але він містить лише просту поведінку та складніший модуль, який містить тестовану поведінку.
Реалізація
Нехай, необхідно протестувати графічний інтерфейс.
Згідно з цим шаблоном розділимо поведінку на презентатор (Presenter) і представлення (View).
Представлення (View) - це "скромний" об'єкт, складний для тестування. Код у цьому об'єкті дуже спрощений. Він просто переносить дані у графічний інтерфейс, жодним чином не обробляючи їх.
Презентатор (Presenter) - це легко тестований об'єкт. Його завдання — отримати дані від програми і перетворити їх так, щоб Представлення (View) могло просто перемістити їх на екран.
Наприклад, якщо застосунку треба відобразити дату в певному полі, він має передати презентатору об'єкт дати.
Презентатор потім повинен перетворити дату на рядок і помістити її в просту структуру даних, яку називають моделлю представлення (View Model).
Тоді представлення зможе знайти і відобразити дані моделі.
Джерела Humble Object pattern Humble Object Pattern for UIViewController