{"id":3343,"date":"2026-01-30T00:00:00","date_gmt":"2026-01-29T23:00:00","guid":{"rendered":"https:\/\/kunden.weissblaumedia.de\/microconsult\/2021\/02\/09\/tb_interface-designs-2\/"},"modified":"2026-02-08T20:01:36","modified_gmt":"2026-02-08T19:01:36","slug":"tb_interface-designs-2","status":"publish","type":"post","link":"https:\/\/www.microconsult.de\/en\/tb_interface-designs-2\/","title":{"rendered":"Interface designs and their implementations \u2013 Part 2: Realization and access"},"content":{"rendered":"<p><strong>Der Einsatz von Software-Interfaces ist ein elementares Mittel zur Entwicklung von langlebigen und tragf\u00e4higen Software-Architekturen. Deshalb sollten sie so fr\u00fch wie m\u00f6glich in der Architektur etabliert werden, um diese zu stabilisieren. Der Software-Architekt kann so eine schnelle Aufgabenverteilung auf unabh\u00e4ngige Personen, Teams oder Standorte ohne weitere \u201eReibungsverluste\u201c sicherstellen.<br \/>\n<\/strong><\/p>\n<p>Welche Varianten der Architekt beim Interface-Design kennen sollte und wie diese in den Programmiersprachen C und C++ implementierbar sind, verr\u00e4t dieser Beitrag in seinem zweiten Teil &#8211; er zeigt Implementierungsans\u00e4tze durch Assoziation, Komposition, Fassade, virtuelle Interfaces, nicht-virtuelle Interfaces, C++ Templates und <a href=\"https:\/\/en.wikipedia.org\/wiki\/Curiously_recurring_template_pattern\">CRTP<\/a>-Pattern auf.<\/p>\n<p><!--more--><\/p>\n<h4>Konkrete Interface-Implementierungsbeispiele<\/h4>\n<p><strong><em>\u00a0<img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1744\" src=\"https:\/\/www.microconsult.de\/blog\/wp-content\/uploads\/2021\/01\/Bild2-1_Implementierungsbeispiel.png\" alt=\"Grundlage f\u00fcr konkrete Implementierungsbeispiele\" width=\"500\" height=\"442\" data-wp-pid=\"1744\" \/><\/em><\/strong><\/p>\n<p><em>Bild 1<\/em><em>: Grundlage f\u00fcr konkrete Implementierungsbeispiele<\/em><\/p>\n<p>Das Software-Subsystem Controller enth\u00e4lt eine Klasse cController, die zwei Counter \u2013 einen UpCounter und einen DownCounter &#8211; ben\u00f6tigt. Hierf\u00fcr bietet das Software-Subsystem Counter dem Controller das Interface icCounter an, um mit den Countern zu arbeiten.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1745\" src=\"https:\/\/www.microconsult.de\/blog\/wp-content\/uploads\/2021\/01\/Bild2-2_Implentierungsansaetze-Uebersicht.png\" alt=\"\u00dcbersicht Implementierungsans\u00e4tze\" width=\"500\" height=\"174\" data-wp-pid=\"1745\" \/><\/p>\n<p><em>Bild 2<\/em><em>: \u00dcbersicht Implementierungsans\u00e4tze<\/em><\/p>\n<p>Der den Implementierungsbeispielen entsprechende Programmcode ist hier bereitgestellt.<\/p>\n<h4>Assoziation ohne Interfaceklasse<\/h4>\n<p>Aus dem Software-Subsystem Controller greift die Klasse cController \u00fcber zwei Zeiger direkt auf je ein Objekt vom Typ cUpCounter und cDownCounter zu. Dabei ergeben sich zwischen den beiden Software-Subsystemen Controller und Counter zwei Abh\u00e4ngigkeiten (Include-Pfade).<\/p>\n<p>Hier wurde mit Absicht nicht die Assoziation von cController auf cCounter gezogen, damit keine virtuellen Funktionen bzw. Funktionszeiger notwendig sind, aber zum Preis der st\u00e4rkeren Kopplung.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1746\" src=\"https:\/\/www.microconsult.de\/blog\/wp-content\/uploads\/2021\/01\/Bild2-3_Assoziation.png\" alt=\"Assoziation\" width=\"500\" height=\"308\" data-wp-pid=\"1746\" \/><\/p>\n<p><em>Bild 3: <\/em><em>Assoziation<\/em><\/p>\n<h4>Aggregation ohne Interfaceklasse<\/h4>\n<p>Im Vergleich zu dem vorherigen Assoziationsbeispiel \u00fcbernimmt hier die Klasse cController direkt die Instanziierung der ben\u00f6tigten Objekte vom Typ cUpCounter und cDownCounter. Die Instanziierung erfolgt hier dynamisch auf dem Heap mittels malloc() in C und new() in C++. Damit erreichen wir die Grundidee der Weitergabe (des \u201eAusbaus\u201c) der erzeugten Counter-Objekte bei der Aggregation. Der Einsatz des Heaps in der Embedded-Softwareentwicklung ist in vielen Projekten verboten, da er u.a. mit Risiken der Fragmentierung verbunden und damit nicht vorhersagbar bzw. nicht echtzeitf\u00e4hig ist.<\/p>\n<p>Wie bei der Anwendung der Assoziation ergeben sich auch bei der Aggregation f\u00fcr dieses Beispiel zwei Abh\u00e4ngigkeiten. Ebenfalls wurde gezielt auf die Anwendung von virtuellen Funktionen \/ Funktionszeiger verzichtet.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1747\" src=\"https:\/\/www.microconsult.de\/blog\/wp-content\/uploads\/2021\/01\/Bild2-4_Aggregation.png\" alt=\"Aggregation\" width=\"500\" height=\"309\" data-wp-pid=\"1747\" \/><\/p>\n<p><em>Bild 4<\/em><em>: Aggregation<\/em><\/p>\n<h4>Komposition ohne Interfaceklasse<\/h4>\n<p>Bei den Varianten mit Assoziation und Aggregation erfolgen die Objektzugriffe jeweils mit Zeigern (optional mit Referenzen). Der komplette Verzicht auf Zeiger f\u00fchr zur Anwendung der Komposition.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1748\" src=\"https:\/\/www.microconsult.de\/blog\/wp-content\/uploads\/2021\/01\/Bild2-5_Komposition.png\" alt=\"Komposition\" width=\"500\" height=\"305\" data-wp-pid=\"1748\" \/><\/p>\n<p><em>Bild 5<\/em><em>: Komposition<\/em><\/p>\n<p>Hierbei enth\u00e4lt die Klasse cController als Members Objekte der Klassen cUpCounter und cDownCounter. Die Anzahl der Abh\u00e4ngigkeiten bleibt bei zwei, wobei die Kopplung durch die eingebetteten Objekte bei der Komposition gegen\u00fcber der Assoziation und Aggregation verst\u00e4rkt wird.<\/p>\n<h4>Fassade-Pattern<\/h4>\n<p>Das Fassade-Pattern bietet dem Zugreifer cController das Interface icCounter an, welches bereits Daten und Funktionsimplementierungen enth\u00e4lt.<\/p>\n<p>Was sich hinter der Fassade icCounter verbirgt, ist f\u00fcr den Zugreifer nicht wissenswert und auch nicht sichtbar.<\/p>\n<p>Wie bei den vorherigen Beispielen enth\u00e4lt diese Implementierung keine virtuellen Funktionen oder Funktionszeiger. Es ergibt sich nur eine Abh\u00e4ngigkeit (Include-Pfad) und damit eine geringe \/ lose Kopplung. Das Interface (Fassade) enth\u00e4lt ein Z\u00e4hler- und ein Grenzwert-Pr\u00fcfobjekt, die gemeinsam die komplette Funktionalit\u00e4t der Fassade realisieren.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1749\" src=\"https:\/\/www.microconsult.de\/blog\/wp-content\/uploads\/2021\/01\/Bild2-6_FacadePattern.png\" alt=\"Fassade-Pattern \u2013 Interfacerealisierung\" width=\"500\" height=\"327\" data-wp-pid=\"1749\" \/><\/p>\n<p><em>Bild 6: Fassade-Pattern \u2013 Interfacerealisierung<\/em><\/p>\n<h4>Interfaceklasse mit rein virtuellen Funktionen<\/h4>\n<p>Ein klassischer, aus der objektorientierten Welt stammender Interfaceansatz ist die Verwendung von rein virtuellen Funktionen (nur Deklarationen ohne Implementierungen) im Interface. Des Weiteren enth\u00e4lt das Interface icCounter keine Daten.<\/p>\n<p>Der Zugriff auf das Interface erfolgt im cController durch einen Zeiger \/ eine Referenz vom Typ des Interfaces. Dieser Zeiger \/ diese Referenz muss sp\u00e4ter auf ein Objekt der Interface-realisierenden Klassen zeigen.<\/p>\n<p>In C gibt es keine virtuellen Funktionen, daher m\u00fcssen dort die Mechanismen des C++ Compilers manuell mit Hilfe von Funktionszeigertabellen nachgebildet werden.<\/p>\n<p>Was sich hinter dem Interface verbirgt, ist f\u00fcr den Zugreifer cController zun\u00e4chst nicht wissenswert und auch nicht sichtbar. Erst beim Initialisieren der Zeiger \/ Referenzen m\u00fcssen konkrete Objekte von cUpCounter und cDownCounter vorhanden sein.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1750\" src=\"https:\/\/www.microconsult.de\/blog\/wp-content\/uploads\/2021\/01\/Bild2-7_Interface-Realisierung.png\" alt=\"Virtual Interface \u2013 Interfacerealisierung\" width=\"500\" height=\"319\" data-wp-pid=\"1750\" \/><\/p>\n<p><em>Bild 7<\/em><em>: Virtual Interface \u2013 Interfacerealisierung<\/em><\/p>\n<h4>Interfaceklasse mit nicht nur rein virtuellen Funktionen<\/h4>\n<p>Diese Implementierungsvariante basiert auf dem C++ Idiom <a href=\"https:\/\/en.wikibooks.org\/wiki\/More_C%2B%2B_Idioms\/Non-Virtual_Interface\" target=\"_blank\" rel=\"noopener\">Non-Virtual Interface<\/a> (NVI). Bei der Implementierung von rein virtuellen Interfaces ergeben sich im Falle mehrerer Implementierungen typischerweise redundante Programmcode-Anteile.<\/p>\n<p>Das Idiom Non-Virtual Interface implementiert diesen gemeinsamen Code bereits in der Interface-Funktion. Nur die kleinen varianten Anteile der typspezifischen Implementierung sind im Interface als rein virtuelle Funktionen deklariert (isInRange()) und (count_raw()) und bereits in anderen implementierten Funktionen (count())\u00a0 aufgerufen.<\/p>\n<p>Nur die beiden typspezifischen virtuellen Funktionen isInRange() und count_raw() sind jeweils in den Klassen cUpCpounter und cDownCounter individuell implementiert.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1751\" src=\"https:\/\/www.microconsult.de\/blog\/wp-content\/uploads\/2021\/01\/Bild2-8_Non-virtual-Interface.png\" alt=\"Non-Virtual Interface\" width=\"500\" height=\"320\" data-wp-pid=\"1751\" \/><\/p>\n<p><em>Bild 8<\/em><em>: Non-Virtual Interface<\/em><\/p>\n<p>In den Beispielen mit virtuellen Funktionen in Interfaces oder\/und Klassen f\u00fchrt das Ergebnis auf dem Taget zu einer dynamischen Bindung. Dadurch entstehen verschieden Aufw\u00e4nde, die aber im Vergleich zum Nutzen in dem meisten F\u00e4llen vernachl\u00e4ssigbar sind:<\/p>\n<ol>\n<li><strong>Programmspeicher<\/strong> (und Compilezeit)<br \/>\nZur Compilezeit erzeugt die Toolkette zu jeder Klasse, die eine oder mehrere virtuelle Funktionen deklariert oder\/und implementiert, eine VMT (Virtual Method Table). Diese legt der Linker \/ Lokator \u00fcblicherweise in den Programmspeicher. Die VMT enth\u00e4lt die Funktionseinsprung-Adressen zu den klassenspezifischen Funktionsimplementierungen.<\/li>\n<li><strong>Datenspeicher <\/strong>und<strong> Laufzeit<br \/>\n<\/strong>Objekte, instanziiert aus einer Klasse mit virtuellen Funktionen, enthalten als zus\u00e4tzliches, erstes Attribut die Einsprung-Adresse in dessen Klassen-VMT. Dieses Attribut f\u00fcgt der Compiler automatisch hinzu, und der Konstruktor initialisiert es ebenfalls automatisch.<\/li>\n<li><strong>Laufzeit<\/strong><br \/>\nBeim Aufruf einer virtuellen Funktion f\u00fcr ein bestimmtes Objekt \u00fcber einen Zeiger oder eine Referenz wird \u00fcber dessen VMT-Einsprung-Adresse die Funktionsadresse aus der VMT gelesen und anschlie\u00dfend zu dieser Funktionsadresse gesprungen (-&gt; eine In-Direktion mehr als beim Aufruf nicht-virtueller Funktionen). Dies ist die Funktionalit\u00e4t der dynamischen Bindung. Sie erlaubt so die Programmierung der <strong>dynamischen Polymorphie<\/strong>. Diesen Mechanismus f\u00fchrt die C++ Toolkette automatisch aus. In C ist die dynamische Bindung mit etwas mehr Programmieraufwand manuell nachbildbar.<\/li>\n<\/ol>\n<h4>Interface als Template-Parameter<\/h4>\n<p>Die in den Beispielen mit rein virtuellen Interfaces und nicht rein virtuellen Interfaces beschriebenen Aufw\u00e4nde und die damit verbundenen Risiken lassen sich durch die Anwendung von Template-Klassen eliminieren. Der Preis daf\u00fcr ist der Verzicht auf die dynamische Polymorphie, die in vielen Embedded-Softwaresystemen nicht zwingend erforderlich ist. Es ergibt sich nur eine <strong>statische Polymorphie<\/strong>.<\/p>\n<p>Der Interface-Zugreifer tcController bekommt als Template-Parameter die Objekt- \/ Interfacetypen CounterA_T und CounterB_T, deren Realisierungen cUpCounter und cDownCounter er adressieren m\u00f6chte. Eine direkte Abh\u00e4ngigkeit im Programmcode zwischen den Software-Subsystemen Controller und Counter gibt es nicht mehr. Die indirekte Abh\u00e4ngigkeit entsteht durch die Template-Typisierung bei der Instanziierung. Die spezifizierten Typen cUpCounter und cDownCounter m\u00fcssen alles bereitstellen, was der Zugreifer tcController aufruft. Ist das nicht der Fall, meldet dies bereits der Compiler als Fehler (kein Laufzeitfehler!).<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1752\" src=\"https:\/\/www.microconsult.de\/blog\/wp-content\/uploads\/2021\/01\/Bild2-9_Interface-als-Template-Parameter.png\" alt=\"Interface als Template Parameter\" width=\"500\" height=\"329\" data-wp-pid=\"1752\" \/><\/p>\n<p><em>Bild 9<\/em><em>: Interface als Template-Parameter<\/em><\/p>\n<p>Das Interface selbst ist bei diesem Interface-Design nicht eindeutig sichtbar und nur indirekt im Zugreifer durch dessen Aufrufe spezifiziert. Diese Problematik verbessert sich durch die Anwendung des Curiously Recurring Template Pattern (CRTP) [3].<\/p>\n<h4>Curiously Recurring Template Pattern (CRTP)<\/h4>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1771\" src=\"https:\/\/www.microconsult.de\/blog\/wp-content\/uploads\/2021\/02\/Bild-2-10_CRT-Pattern.png\" alt=\"CRT-Pattern\" width=\"500\" height=\"319\" data-wp-pid=\"1771\" \/><\/p>\n<p><em>Bild 10<\/em><em>: CRT-Pattern<\/em><\/p>\n<p>Die Template-Klasse tcCounter bzw. deren Funktionen repr\u00e4sentieren das komplette Interface und sind vom Zugreifer tcController aufrufbar:<\/p>\n<p>mobjCounterA.count();<br \/>\nmobjCounterB.count();<\/p>\n<p>Die Interface-Funktion count() der Interface-Template-Klasse tcCounter ruft als Delegate \u00fcber den Template-Parameter Realization_T die count() Funktion der realisierenden Klasse tcUpCounter bzw. tcDownCounter auf:<\/p>\n<pre>template &lt;typename Realization_T&gt;\r\n\r\nvoid tcCounter&lt;Realization_T&gt;::count()\r\n\r\n{\r\n\r\n<strong>static_cast<\/strong><strong>&lt;<\/strong><strong>Realization_T<\/strong><strong>*&gt;(<\/strong><strong>this<\/strong><strong>)-&gt;count();<\/strong>\r\n\r\n}<\/pre>\n<p>Der Template-Parameter Realization_T wird bereits direkt bei der Vererbung von tcCounter in tcUpCounter und tcDownCounter gesetzt:<\/p>\n<p>class <strong>cUpCounter<\/strong> \u00a0 final : public <strong>tcCounter<\/strong><strong>&lt;<\/strong><strong>cUpCounter<\/strong><strong>&gt;<br \/>\n<\/strong>class <strong>cDownCounter<\/strong> final : public <strong>tcCounter<\/strong><strong>&lt;<\/strong><strong>cDownCounter<\/strong><strong>&gt;<\/strong><\/p>\n<p>Das Setzen eines Template-Parameters mit sich selbst als Klassentyp wird als <strong>MixedIn<\/strong> bezeichnet.<\/p>\n<h4>Res\u00fcmee<\/h4>\n<p>Die Entscheidung f\u00fcr das \u201erichtige\u201c Interface-Design ist immer von den geltenden Software-Anforderungen abh\u00e4ngig.<\/p>\n<p>Interfaces unterst\u00fctzen positiv die Umsetzung von Software-Qualit\u00e4tsmerkmalen, wie beispielsweise Wiederverwendbarkeit, Portabilit\u00e4t, Austauschbarkeit und Erweiterbarkeit. Interface-Konzepte sind ein geeignetes Mittel zur Erf\u00fcllung von Software-Entwurfsprinzipien, z.B. lose Kopplung, Externalisierung von Abh\u00e4ngigkeiten, Modularisierung und Erreichen einer hohen Koh\u00e4sion.<\/p>\n<p>Ein weiterf\u00fchrendes Konzept zu und mit Interfaces sind <strong>Ports<\/strong>. Ein Port vereint thematisch null bis unendlich viele bereitgestellte Interfaces und null bis unendlich viele erwartete Interfaces und l\u00e4sst sich mit anderen kompatiblen Ports verbinden.<\/p>\n<p>Erfahren Sie in <a href=\"https:\/\/www.microconsult.de\/tb_interface-designs-1\/\" target=\"_blank\" rel=\"noopener\">Teil 1<\/a> des Beitrags alles \u00fcber Interface-Konzepte und unterschiedliche Interface-Typen.<\/p>\n<p><strong>Holen Sie sich das richtige Wissen dar\u00fcber, welche Varianten Sie beim Interface-Design kennen sollten und wie diese in den Programmiersprachen C und C++ implementierbar sind.<br \/>\n<\/strong><\/p>\n<p><strong>MicroConsult bietet Ihnen professionelle <a href=\"https:\/\/www.microconsult.de\/alle-trainings-termine-komplettuebersicht\/\" target=\"_blank\" rel=\"noopener\">Trainings und Coachings<\/a> rund um die Themen <a href=\"https:\/\/www.microconsult.de\/trainings-beratung\/trainings\/analyse-design-und-architektur\/AAAAKBL\" target=\"_blank\" rel=\"noopener\">Analyse, Design und Architektur<\/a> uvm. an &#8211; auch im Live-Online-Format.<\/strong><\/p>\n<h3>Weiterf\u00fchrende Informationen<\/h3>\n<p><strong>Trainings zum Thema &#8211; auch im Live-Online-Format:<\/strong><\/p>\n<ul>\n<li><strong><a href=\"https:\/\/www.microconsult.de\/trainings-beratung\/training\/requirements-engineering-schulung-requirements-engineering-und-requirements-management-fuer-embedded-systeme\/AAAACAV\" target=\"_blank\" rel=\"noopener\">Requirements Engineering und Management f\u00fcr Embedded-Systeme<\/a><\/strong><\/li>\n<li><strong><a href=\"https:\/\/www.microconsult.de\/trainings-beratung\/training\/software-architektur-schulung-fuer-embedded-systeme-und-echtzeitsysteme\/AAAADEZ\" target=\"_blank\" rel=\"noopener\">Software-Architekturen f\u00fcr Embedded- und Echtzeitsysteme<\/a><\/strong><\/li>\n<li><strong><a href=\"https:\/\/www.microconsult.de\/trainings-beratung\/training\/embedded-c-schulung-programmiermethoden-und-tools-fuer-embedded-anwendungen\/AAAACJA\" target=\"_blank\" rel=\"noopener\">Embedded C++ f\u00fcr Fortgeschrittene: Objektorientierte Programmierung f\u00fcr Mikrocontroller mit C++\/EC++<\/a><\/strong><\/li>\n<li><strong><a href=\"https:\/\/www.microconsult.de\/trainings-beratung\/training\/embedded-software-design-und-patterns-mit-c\/AAAADTE\" target=\"_blank\" rel=\"noopener\">Embedded-Software-Design und Patterns mit C<\/a><\/strong><\/li>\n<li><strong><a href=\"https:\/\/www.microconsult.de\/trainings-beratung\/trainings\/analyse-design-und-architektur\/AAAAKBL\" target=\"_blank\" rel=\"noopener\">Interfacedesign \u2013 Analyse, Design und Architektur<\/a><\/strong><\/li>\n<\/ul>\n<p><strong><a href=\"https:\/\/www.microconsult.de\/alle-trainings-termine-komplettuebersicht\/\" target=\"_blank\" rel=\"noopener\">Alle Trainings &amp; Termine auf einen Blick<\/a><\/strong><\/p>\n<p><a href=\"https:\/\/www.microconsult.de\/embedded-und-echtzeit-softwareentwicklung\/\" target=\"_blank\" rel=\"noopener\"><strong>MicroConsult Fachwissen zum Thema Embedded SW-Entwicklung<\/strong><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Der Einsatz von Software-Interfaces ist ein elementares Mittel zur Entwicklung von langlebigen und tragf\u00e4higen Software-Architekturen. Deshalb sollten sie so fr\u00fch wie m\u00f6glich in der Architektur etabliert werden, um diese zu stabilisieren. Der Software-Architekt kann so eine schnelle Aufgabenverteilung auf unabh\u00e4ngige Personen, Teams oder Standorte ohne weitere \u201eReibungsverluste\u201c sicherstellen. Welche Varianten der Architekt beim Interface-Design kennen [&hellip;]<\/p>\n","protected":false},"author":11,"featured_media":3338,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_et_pb_use_builder":"","_et_pb_old_content":"","_et_gb_content_width":"","inline_featured_image":false,"footnotes":""},"categories":[9,16],"tags":[295,120,296,10,297,306,289,290,183,14,87],"class_list":["post-3343","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-embedded_und_echtzeit-softwareentwicklung","category-system_und_hardwareentwicklung","tag-c","tag-c-programmierung","tag-entwurfsprinzipien","tag-implementierung","tag-interface","tag-interface-designs","tag-interface-konzepte","tag-interfacedesign","tag-pattern","tag-software-architektur","tag-softwarearchitektur"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.9 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Interface-Designs und ihre Implementierungen - Teil 2: Realisierung und Zugriff - MicroConsult Academy GmbH<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.microconsult.de\/en\/tb_interface-designs-2\/\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Interface-Designs und ihre Implementierungen - Teil 2: Realisierung und Zugriff - MicroConsult Academy GmbH\" \/>\n<meta property=\"og:description\" content=\"Der Einsatz von Software-Interfaces ist ein elementares Mittel zur Entwicklung von langlebigen und tragf\u00e4higen Software-Architekturen. Deshalb sollten sie so fr\u00fch wie m\u00f6glich in der Architektur etabliert werden, um diese zu stabilisieren. Der Software-Architekt kann so eine schnelle Aufgabenverteilung auf unabh\u00e4ngige Personen, Teams oder Standorte ohne weitere \u201eReibungsverluste\u201c sicherstellen. Welche Varianten der Architekt beim Interface-Design kennen [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.microconsult.de\/en\/tb_interface-designs-2\/\" \/>\n<meta property=\"og:site_name\" content=\"MicroConsult Academy GmbH\" \/>\n<meta property=\"article:published_time\" content=\"2026-01-29T23:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-02-08T19:01:36+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/07\/interfacedesign.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"849\" \/>\n\t<meta property=\"og:image:height\" content=\"566\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Rouven Braden\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Rouven Braden\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimated reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/tb_interface-designs-2\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/tb_interface-designs-2\\\/\"},\"author\":{\"name\":\"Rouven Braden\",\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/#\\\/schema\\\/person\\\/42c82c0317d0fb5d87875c9b1dcab3c1\"},\"headline\":\"Interface-Designs und ihre Implementierungen &#8211; Teil 2: Realisierung und Zugriff\",\"datePublished\":\"2026-01-29T23:00:00+00:00\",\"dateModified\":\"2026-02-08T19:01:36+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/tb_interface-designs-2\\\/\"},\"wordCount\":1424,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/tb_interface-designs-2\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.microconsult.de\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/interfacedesign.jpg\",\"keywords\":[\"C++\",\"C++ Programmierung\",\"Entwurfsprinzipien\",\"Implementierung\",\"Interface\",\"Interface-Designs\",\"Interface-Konzepte\",\"Interfacedesign\",\"Pattern\",\"Software-Architektur\",\"Softwarearchitektur\"],\"articleSection\":[\"Embedded- und Echtzeit-Softwareentwicklung\",\"System- und Hardwareentwicklung\"],\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.microconsult.de\\\/tb_interface-designs-2\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/tb_interface-designs-2\\\/\",\"url\":\"https:\\\/\\\/www.microconsult.de\\\/tb_interface-designs-2\\\/\",\"name\":\"Interface-Designs und ihre Implementierungen - Teil 2: Realisierung und Zugriff - MicroConsult Academy GmbH\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/tb_interface-designs-2\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/tb_interface-designs-2\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.microconsult.de\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/interfacedesign.jpg\",\"datePublished\":\"2026-01-29T23:00:00+00:00\",\"dateModified\":\"2026-02-08T19:01:36+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/#\\\/schema\\\/person\\\/42c82c0317d0fb5d87875c9b1dcab3c1\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/tb_interface-designs-2\\\/#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.microconsult.de\\\/tb_interface-designs-2\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/tb_interface-designs-2\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.microconsult.de\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/interfacedesign.jpg\",\"contentUrl\":\"https:\\\/\\\/www.microconsult.de\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/interfacedesign.jpg\",\"width\":849,\"height\":566,\"caption\":\"Interfacedesign\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/tb_interface-designs-2\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.microconsult.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Interface-Designs und ihre Implementierungen &#8211; Teil 2: Realisierung und Zugriff\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/#website\",\"url\":\"https:\\\/\\\/www.microconsult.de\\\/\",\"name\":\"MicroConsult Academy GmbH\",\"description\":\"Professionelle Schulungen, Beratung und Projektunterst\u00fctzung\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.microconsult.de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-GB\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/#\\\/schema\\\/person\\\/42c82c0317d0fb5d87875c9b1dcab3c1\",\"name\":\"Rouven Braden\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ec3c96272d5640b10f778a21c8e0535d0a7ddc86a149f7c8d81c26359e93d04d?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ec3c96272d5640b10f778a21c8e0535d0a7ddc86a149f7c8d81c26359e93d04d?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ec3c96272d5640b10f778a21c8e0535d0a7ddc86a149f7c8d81c26359e93d04d?s=96&d=mm&r=g\",\"caption\":\"Rouven Braden\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Interface designs and their implementations - Part 2: Realization and access - MicroConsult Academy GmbH","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.microconsult.de\/en\/tb_interface-designs-2\/","og_locale":"en_GB","og_type":"article","og_title":"Interface-Designs und ihre Implementierungen - Teil 2: Realisierung und Zugriff - MicroConsult Academy GmbH","og_description":"Der Einsatz von Software-Interfaces ist ein elementares Mittel zur Entwicklung von langlebigen und tragf\u00e4higen Software-Architekturen. Deshalb sollten sie so fr\u00fch wie m\u00f6glich in der Architektur etabliert werden, um diese zu stabilisieren. Der Software-Architekt kann so eine schnelle Aufgabenverteilung auf unabh\u00e4ngige Personen, Teams oder Standorte ohne weitere \u201eReibungsverluste\u201c sicherstellen. Welche Varianten der Architekt beim Interface-Design kennen [&hellip;]","og_url":"https:\/\/www.microconsult.de\/en\/tb_interface-designs-2\/","og_site_name":"MicroConsult Academy GmbH","article_published_time":"2026-01-29T23:00:00+00:00","article_modified_time":"2026-02-08T19:01:36+00:00","og_image":[{"width":849,"height":566,"url":"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/07\/interfacedesign.jpg","type":"image\/jpeg"}],"author":"Rouven Braden","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Rouven Braden","Estimated reading time":"10 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.microconsult.de\/tb_interface-designs-2\/#article","isPartOf":{"@id":"https:\/\/www.microconsult.de\/tb_interface-designs-2\/"},"author":{"name":"Rouven Braden","@id":"https:\/\/www.microconsult.de\/#\/schema\/person\/42c82c0317d0fb5d87875c9b1dcab3c1"},"headline":"Interface-Designs und ihre Implementierungen &#8211; Teil 2: Realisierung und Zugriff","datePublished":"2026-01-29T23:00:00+00:00","dateModified":"2026-02-08T19:01:36+00:00","mainEntityOfPage":{"@id":"https:\/\/www.microconsult.de\/tb_interface-designs-2\/"},"wordCount":1424,"commentCount":0,"image":{"@id":"https:\/\/www.microconsult.de\/tb_interface-designs-2\/#primaryimage"},"thumbnailUrl":"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/07\/interfacedesign.jpg","keywords":["C++","C++ Programmierung","Entwurfsprinzipien","Implementierung","Interface","Interface-Designs","Interface-Konzepte","Interfacedesign","Pattern","Software-Architektur","Softwarearchitektur"],"articleSection":["Embedded- und Echtzeit-Softwareentwicklung","System- und Hardwareentwicklung"],"inLanguage":"en-GB","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.microconsult.de\/tb_interface-designs-2\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.microconsult.de\/tb_interface-designs-2\/","url":"https:\/\/www.microconsult.de\/tb_interface-designs-2\/","name":"Interface designs and their implementations - Part 2: Realization and access - MicroConsult Academy GmbH","isPartOf":{"@id":"https:\/\/www.microconsult.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.microconsult.de\/tb_interface-designs-2\/#primaryimage"},"image":{"@id":"https:\/\/www.microconsult.de\/tb_interface-designs-2\/#primaryimage"},"thumbnailUrl":"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/07\/interfacedesign.jpg","datePublished":"2026-01-29T23:00:00+00:00","dateModified":"2026-02-08T19:01:36+00:00","author":{"@id":"https:\/\/www.microconsult.de\/#\/schema\/person\/42c82c0317d0fb5d87875c9b1dcab3c1"},"breadcrumb":{"@id":"https:\/\/www.microconsult.de\/tb_interface-designs-2\/#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.microconsult.de\/tb_interface-designs-2\/"]}]},{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/www.microconsult.de\/tb_interface-designs-2\/#primaryimage","url":"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/07\/interfacedesign.jpg","contentUrl":"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/07\/interfacedesign.jpg","width":849,"height":566,"caption":"Interfacedesign"},{"@type":"BreadcrumbList","@id":"https:\/\/www.microconsult.de\/tb_interface-designs-2\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.microconsult.de\/"},{"@type":"ListItem","position":2,"name":"Interface-Designs und ihre Implementierungen &#8211; Teil 2: Realisierung und Zugriff"}]},{"@type":"WebSite","@id":"https:\/\/www.microconsult.de\/#website","url":"https:\/\/www.microconsult.de\/","name":"MicroConsult Academy GmbH","description":"Professional training, consulting and project support","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.microconsult.de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-GB"},{"@type":"Person","@id":"https:\/\/www.microconsult.de\/#\/schema\/person\/42c82c0317d0fb5d87875c9b1dcab3c1","name":"Rouven Braden","image":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/secure.gravatar.com\/avatar\/ec3c96272d5640b10f778a21c8e0535d0a7ddc86a149f7c8d81c26359e93d04d?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/ec3c96272d5640b10f778a21c8e0535d0a7ddc86a149f7c8d81c26359e93d04d?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ec3c96272d5640b10f778a21c8e0535d0a7ddc86a149f7c8d81c26359e93d04d?s=96&d=mm&r=g","caption":"Rouven Braden"}}]}},"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/posts\/3343","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/users\/11"}],"replies":[{"embeddable":true,"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/comments?post=3343"}],"version-history":[{"count":3,"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/posts\/3343\/revisions"}],"predecessor-version":[{"id":11478,"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/posts\/3343\/revisions\/11478"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/media\/3338"}],"wp:attachment":[{"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/media?parent=3343"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/categories?post=3343"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/tags?post=3343"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}