Сохранение слабой связи классов — важный аспект написания кода, который легко понять, изменить и отладить — я это понимаю. Тем не менее, как новичок, я почти каждый раз, когда я выхожу за рамки самых простых примеров, с которыми я сталкиваюсь.
Я более или менее понимаю, как можно инкапсулировать строки, целые числа и простые типы данных в собственные классы. Однако когда я начинаю работать с такой информацией, как форматирование форматированного текста, все становится очень сложно, если только я не использую различные методы, уже присутствующие в компоненте. Чтобы продолжить этот пример, предположим, что я пишу что-то, что включает компонент заметок RTF в пользовательский интерфейс. В Delphi компонент имеет встроенные методы для выполнения таких действий, как сохранение форматированного текста. Кроме того, иногда кажется, что единственный (или, по крайней мере, лучший) способ работы с самим RTF-текстом — это методы, вновь встроенные в компонент.
Как (или зачем) мне выполнять всю работу по сохранению, загрузке и форматированию текста в другом классе, если у меня уже есть компонент, который делает все это за меня?
Самостоятельно я обычно заканчиваю тем, что либо (а) делаю что-то, что кажется намного более сложным, чем нужно, заново изобретая уже существующие методы, либо (б) создаю плохо сделанные классы, которые все еще тесно связаны друг с другом. Как говорится в рекламных роликах, "Должен быть лучший способ!"
Я просто концептуально потерялся в том, как работает этот «лучший способ». Есть предположения?