Die typesafety (van GDK) leek mij dat als een object je meerdere interfaces implementeert, je dan de business code die een aspect daarvan gebruikt (TCEO in het voorbeeld) geheel kan uitdrukken in dat aspect ipv de het hele object.
Maar refcounting disablen in tcomponent afgeleiden als TForm (nieuw voor mij Overigens). Wel logisch natuurlijk, omdat het stukje VCL en form initializatie in de .dpr van voor de introductie van interfaces stamt. Let wel, de overhead is er nog steeds, want de method calls worden dan gegeneerd. Ik dacht dat ze dat hadden aangepast.
Ik dacht dat de overhead nu ook uit te schakelen was (Alexandria, of die ervoor). Als dat alleen kan door bergen foeilelijke [weak]'s rond te strooien, dan valt dat tegen.
Refcounting is primair wat ik tegen interface gebruik hebt, want het maakt het een alles of niets beslissing die ik doorgaans de moeite niet waard vindt. Als de refcounting niet bestaat, kan je delen van je programma (businesscode) in interfaces uitdrukken zonder de rest te beïnvloeden. Zoals je dat bij Java kan, zonder er over na te denken.
Als je een classe hebt met meerdere interfaces, hoe krijg je die dan in een nette manier?
Dus als je
izoogdier :=TKoe.create;
en dan van izoogdier proberen IEierleggend te verkrijgen voor het geval je een vogelbekdier hebt. Als er geen relatie tussen de interfaces is, dan moet dat toch over de originele classe.
Hack manieren met zelf refcount increasen, componentreference enz ken ik wel, maar hoe doe je dit netjes voor je businesscode in de praktijk?
Bookmarks