ewx hat geschrieben: ↑22.04.2020 12:09
Habe ich auch nicht verstanden...
a-dead-trousers hat geschrieben: ↑21.04.2020 20:56
Die lokale Klasse implementiert ein globales Interface
Soweit verstehe ich es. und dann...?
Die Implementierungen aller Objete (via Interfaces-Methoden) die von außen sichtbar sein sollen erfolgen in der globalen Klasse als lokale Klassen. Alles was für das Gelingen der API bzw. des Frameworks unter der Haube miteinender kommunizieren soll bleibt dabei aber trotzdem abgeschotten. Sowas wie eine riesige Friends-Beziehung.
Um beim Beispiel IXML zu bleiben:
Es gibt keine Möglichkeit z.B. von der Klasse CL_IXML_ELEMENT abzuleiten. Somit gibt es auch keine Möglichkeit das Framework vom Entwickler unbeabsichtigt zu "beeinflussen". Wenn man aber das Interface IF_IXML selbst implementiert kann man sich sein eigenes Framework hochziehen und dabei nach belieben die internen Abläufe optimieren.
Warum ich dieses Vorgehen zum Schutz der Integrität eines Frameworks zum Teil besser finde als zum Beispiel mit dem Friends-Kozept liegt daran, dass ich mir bei globalen Klassen trotzdem immer Gedanken machen muss wie die Kommunikation zwischen den einzelnen Objekte ausgestalten werden muss. Nicht zuviele Methoden Public machen um nicht Gefahr zu laufen, dass damit Missbrauch betrieben werden kann vs. einen möglichst effizienten Umgang mit internen Ressourcen.
Trotzdem hab ich mir die Wiederverwendbarkeit nicht vollends verbaut, weil zumindest die Methodensignaturen dank der Interfaces klar definiert bleiben.
Wobei ich aber zugeben muss, dass ich sowas bislang selbst noch nicht umgesetzt habe, weil mir die Wiederverwendbarkeit von Code in globalen Klassen doch noch um einen Zacken wichtiger ist als die Wahrung der Konsistenz von APIs.
Ich will nur aufzeigen, dass eine derartige Vorgehensweise in einigen Fällen durchaus Sinn machen kann, nicht dass ich es gutheißen würde. 😉
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.
ECC: 6.18
Basis: 7.50