Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Achtung: Dies ist nicht der vollständige Artikel, sondern nur ein paar Seiten davon. Wenn Sie hier nicht erfahren, was Sie wissen möchten, finden Sie am Ende Informationen darüber, wie Sie den ganzen Artikel lesen können.

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

Gedrucktes Heft

Diesen Beitrag finden Sie in Ausgabe 4/2010.

Unser Angebot für Sie!

Lesen Sie diesen Beitrag und 500 andere sofort im Onlinearchiv, und erhalten Sie alle zwei Monate brandheißes Access-Know-how auf 72 gedruckten Seiten! Plus attraktive Präsente, zum Beispiel das bald erscheinende Buch 'Access 2010 - Das Grundlagenbuch für Entwickler'!

Diesen Beitrag twittern

Zusammenfassung

Benutzen Sie das Factory-Entwurfsmuster, um Klassen unabhängig von ihrer konkreten Implementierung zu nutzen.

Techniken

VBA, Klassenprogrammierung

Voraussetzungen

Access 2000 und höher

Beispieldateien

FactoryPattern.mdb

Shortlink

www.access-im-unternehmen.de/735

Das Factory-Pattern

André Minhorst, Duisburg

Wenn Sie mit der Verwendung von Interfaces vertraut sind und diese anwenden, um verschiedene Implementierungen einer Klasse einzusetzen, fehlt nur noch ein kleiner Schritt zur Entkopplung des aufrufenden Codes zu den genutzten Klassen. Dieser Beitrag zeigt, wie Sie das Factory-Pattern für die Erzeugung beliebiger Implementierungen einer Schnittstelle nutzen, ohne dass die aufrufende Prozedur einen Bezug zu dieser Implementierung hat.

Der Beitrag Schnittstellenvererbung (www.access-im-unternehmen.de/734) zeigt am Beispiel des Versands einer E-Mail, wie Sie eine Schnittstelle beziehungsweise ein Interface nutzen können, um eine von mehreren konkreten Implementierungen dieses Interfaces zu verwenden.

Der Aufbau des dortigen Beispiels besteht aus einer Interface-Klasse namens ISendMail, welche die in einer Implementierung der SendMail-Klasse zu verwendenden Elemente, also Eigenschaften und Methoden, vorgibt (s. Listing 1).

Listing 1: Beispiel für eine Interface-Klasse

Public Property Let Sender(strSender As String)

End Property

Public Property Let Recipient(strRecipient As String)

End Property

Public Property Let Subject(strSubject As String)

End Property

Public Property Let Body(strBody As String)

End Property

Public Function SendMail() As Boolean

End Function

Eine konkrete Implementierung sieht dann wie in Abb. 1 aus. Es kann gleich mehrere Klassen dieser Art geben, zum Beispiel clsSendSMTPMail oder clsSendOutlookMail. Gründe dafür, mehrere gleichartige Implementierungen in ein Projekt einzubauen, gibt es viele: So können Sie beispielsweise eine Klasse zum Versenden von E-Mails via Outlook vorsehen, die immer dann eingesetzt wird, wenn auf dem Rechner, auf dem die Datenbankanwendung eingesetzt wird, Outlook vorhanden ist. Ist kein Outlook installiert, soll die E-Mail über den direkten Kontakt zum SMTP-Server verschickt werden, der beispielsweise mit den Methoden der WinSock-Klasse hergestellt werden kann.Die Outlook-Methode wäre jedoch zu bevorzugen, weil der Benutzer die versendeten Mails hier jederzeit im Ordner der gesendeten Objekte nachhalten könnte.

pic001.png

Abb. 1: Implementierung einer Schnittstelle

Um die Verwendung der Klassen zu vereinfachen, nutzen wir beispielsweise eine Prozedur, die nur die Parameter für den Mail-Versand und die Angabe der Versandart erwartet. Diese deklariert alle möglichen Mail-Klassen und instanziert dann die jeweils benötigte (s. Listing 2).

Listing 2: Konkrete Instanzierung von E-Mail-Klassen

Public Sub MailVersenden(strAbsender As String, strEmpfaenger As String, strBetreff As String, _

        strInhalt As String, strVersandart As String)

    Dim objSendSMTPMail As clsSendSMTPMail

    Dim objSendOutlookMail As clsSendOutlookMail

    Select Case strVersandart

        Case "SMTP"

            Set objSendSMTPMail = New clsSendSMTPMail

            With objSendSMTPMail

                .Sender = strAbsender

                '... weitere Zugriffe auf die Klasse

            End With

Sie haben das Ende des frei verfügbaren Teils des Artikels erreicht. Lesen Sie weiter, um zu erfahren, wie Sie den vollständigen Artikel lesen und auf viele hundert weitere Artikel zugreifen können.

Sind Sie Abonnent?Jetzt einloggen ...
 

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

Verwandte Beiträge:

Schnittstellenvererbung

Validieren mit Klasse

Modale Dialoge mal anders

Ereignisprozeduren implantieren

Objektorientiertes Programmieren mit Klassen

Ereignisse im Eigenbau

Effizientes Codieren

© 2003-2015 André Minhorst Alle Rechte vorbehalten.