xbow
продолжим аналогию с организмом и чайником.
Вот есть необходимость снабдить все органы, в т.ч. и печень, водой из чайника. Исходя из твоего примера, я должен каждому органу приделать “рты”, через которые бы снабжал эти органы водой из чайника.
Да, там бы никогда не вышло так, что кипяток полился бы в печень напрямую. Ведь чтобы чаю попить из чайника, нужно кипяток сделать в нём с помощью нагрева, а после чая этот кипяток в нём останется и дальше, не охладится внезапно. Но потом ты вдруг обнаруживаешь, что в чайнике-то кипяток, а печень, которая напрямую у тебя сосёт из чайника, на кипяток не расчитана. И вот тут-то у тебя и будет решение о том, чтобы повысить термостойкость печени. Ты же типа умный, а раз так, то надо думать над термостойкостью печени срочно.
Между печенью и чайником всегда можно вставить и термометр, и лёд. Но это между нормальными печенью и чайником, а не между твоими этими, прирощенными друг к другу ради удобства.
xbow
А мне хочется иметь в классе “организм” только один “рот” и внутреннюю систему дистрибуции в подклассы “органы”.
Ну, это
распространённая ошибка, я же тебе не просто так это всё пишу. Ты куда-то в глупую сторону заворачиваешь - я тебе пишу “не ходи туда, это сломает программу”.
Но ты нихера не понимаешь, а когда ты не понимаешь чего-то, ты думаешь, что ты умный и все советчики дураки просто.
xbow
Т.е. ограничить число точек входа в отдельный модуль, обслуживающий своими классами определённый тип задач (gui, db, etc) - я не просто так приводил в примере разные фалы-модули.
Ну вот, когда несколько сотен наберётся, а не три штучки, тогда ты расскажешь, как ты здорово всё контролируешь в одном рте, в котором не три зуба к этому времени, а пятьсот тридцать восемь. К тому моменту ты уже не будешь помнить, какие модули у тебя есть в программе, а каких нет. И вот когда они все будут зависеть то от одного, то от другого и когда лишний раз нельзя будет пукнуть, чтобы не сломать всю программу сверху донизу, тогда я и посмотрю на тебя в тот момент, когда обнаружится какой-то баг и его надо будет
срочно исправлять, потому что он критически всё портит и его нельзя оставлять точно ни на один день (программа работает где-то и делает важную вещь, за которую и посадить могут). Думаю, у тебя получится ситуация, как у компании Microsoft, когда периодически обновления системы просто ломают всё в системе. К этому уже давно все привыкли и это уже даже считается нормальным, что без этого невозможно существовать. Недавний случай, на этой неделе, сломал все браузеры. Там сначала слишком много индусов писали код тяп-ляп на отъебись называется, а потом вдруг баги поплыли проявляться у пользователей то тут то там, в том числе и спустя годы после тех индусов дешёвых. Так чтобы их исправить, понадобилось перерабатывать по полсистемы каждый раз, да и то это не закончилось успешно, так как отголоски этих исправлений до сих пор ломают всю систему при обновлениях.
Ты знаешь, почему язык Pascal умер, а язык C живёт? Потому что в Pascal встроили вывод в консоль, не предполагая даже, что когда-то консолей не станет в мире. А в языке C вывод в консоль - это просто библиотечная функция. Библиотеку всегда можно отключить, написать вместо неё другую библиотеку и подключить к языку новую библиотеку. Так с консолей можно перейти на сенсорные экраны, не затрагивая язык сам. А можно перейти и на нейронные интерфейсы году к 2050-му, пока что таких нет и мы о них даже думать не можем, потому что это придумают потом.
Мало ли что тебе там удобно, ты просто ребёнок, прыгающий вокруг вагона с шоколадом и пытающийся его весь сожрать за один день. Только дверца закрыта и ключик не подберёшь никак. Но взрослые рядом, не волнуйся, они дадут тебе по лбу и отправят делать уроки, скучные прескучные.