Бог возражает - God object
Эта статья включает Список ссылок, связанное чтение или внешняя ссылка, но его источники остаются неясными, потому что в нем отсутствует встроенные цитаты.Март 2012 г.) (Узнайте, как и когда удалить этот шаблон сообщения) ( |
В объектно-ориентированного программирования, а Бог возражает является объект который слишком много знает или же делает слишком много. Объект Бога является примером антипаттерн.
Распространенный метод программирования - отдельный большая проблема на несколько меньших проблем ( разделяй и властвуй стратегия ) и создавать решения для каждого из них. Как только меньшие проблемы решены, большая проблема в целом решена. Следовательно, данный объект для небольшой проблемы должен знать только о себе. Точно так же объекту необходимо решить только один набор проблем: собственный проблемы. Это также следует Принцип единоначалия.
Напротив, программа, использующая объект God, не следует этому подходу. Большая часть общей функциональности такой программы закодирована в единый «всезнающий» объект, который поддерживает большую часть информации обо всей программе, а также предоставляет большую часть методы для манипулирования этими данными. Поскольку этот объект содержит так много данных и требует так много методов, его роль в программе становится богоподобной (всезнающей и всеобъемлющей). Вместо того, чтобы программные объекты обменивались данными между собой напрямую, другие объекты в программе полагаются на один объект Бога для большей части своей информации и взаимодействия. Поскольку этот объект тесно связаны к такому большому количеству другого кода (на который ссылается) обслуживание становится более трудным, чем это было бы при более равномерно разделенной структуре программирования. Изменения, внесенные в объект в пользу одной процедуры, могут иметь непреднамеренное влияние на другие несвязанные процедуры.
Объект God - это объектно-ориентированный аналог отказа от использования подпрограммы в процедурные языки программирования, или использовать слишком много глобальные переменные для хранения государственной информации.
В то время как создание объекта God обычно считается плохой практикой программирования, этот метод иногда используется для жестких программных сред (таких как микроконтроллеры ), где повышение производительности и централизация управления важнее ремонтопригодности и элегантности программирования.
Смотрите также
- Код равиоли - обратный паттерн
дальнейшее чтение
- Риэль, Артур Дж. (1996). "Глава 3: Топологии ориентированных на действие приложений против объектно-ориентированных приложений". Эвристика объектно-ориентированного дизайна. Бостон, Массачусетс: Аддисон-Уэсли. ISBN 0-201-63385-X.
3.2: Не создавайте божественные классы / объекты в вашей системе. С большим подозрением относитесь к абстракции, имя которой содержит Driver, Manager, System или Subsystem.
- Антипаттерны и худшие приемы - объекты-монстры.