Cześć.
Staram się napisać program zgodny z paradygmatem obiektowym. Piszę go w Lazarusie. Potrzebowałem, logować pewne rzeczy to pliku. Utworzyłem zatem prywatną metodę logującą w klasie gdzie to było konieczne. Nie jest to nic skomplikowanego, tylko metoda która dopisuje do TMemoryStream kolejne linie i zapisuje na dysku. TMemoryStream jest inicjowany w konstruktorze klasy, w której się zawiera. W zasadzie klasa ta jest singletonem, więc to jest raczej poprawne. Kwestia tego, że obecnie mam potrzebę w kolejnej klasie coś tam logować, i teraz mam problem jak to rozwiązać. Nie chce tworzyć metod globalnych, bo z doświadczenia z pracy wiem, że to rozwiązania problematyczne w późniejszym utrzymaniu, jak i niezgodne z OOP. W takim razie mogę stworzyć kolejną klasę, będącą singletonem, tylko po to, żeby mieć tam tą metodę coś jak TTools. Tylko, że to niewiele różni się od funkcji globalnej. Czy może stworzyć wspólną klasę bazową, dla wszystkich obiektów, które potrzebują logowania i mieć tam metodę logującą i obiekt statyczny typu TMemoryStream ?? W jaki sposób rozwiązujecie podobne kwestie i jak jest poprawnie ??