0

Ich bin ein Neuling, wenn es um Design-Muster kommt, so habe ich eine harte Zeit zu begreifen, das Konzept der Dekorateur Design-Muster. Ist es möglich, eine einfach verknüpfte Listenklasse mit einer doppelt verknüpften Listenklasse zu versehen, die von ihr erbt? Ich möchte die folgende Klasse dekorieren:Verwenden Decorator Design-Muster, um eine doppelt verknüpfte Liste durch Dekorieren einer einfach verknüpften Liste zu erstellen

ListAsSLL.h:

#ifndef LISTASSLL_H 
#define LISTASSLL_H 

class ListAsSLL 
{ 
protected: 
    struct node{ 
     int i; 
     struct node* next; 
    }; 
    node* head; 
    node* tail; 
    int listSize; 

public: 
    ListAsSLL(); 
    virtual void addToBeginning(int obj); 
    virtual void addAtPos(int obj, int i); 
    virtual void addToEnd(int obj); 
    virtual void del(int i); 
    virtual void overwrite(int obj, int i); 
    virtual void grow(); 
    virtual void shrink(); 
}; 

#endif //LISTASSLL_H 

der doppelt verknüpften Liste Klasse die gleiche Funktionalität geben mit dem zusätzlichen Merkmal, eine Struktur mit einem Zeiger auf den vorherigen Knoten aufweist.

Hoffentlich kann jemand etwas Licht darauf werfen, wie man das macht. Danke im Voraus.

+0

Was ist eine Schnittstelle für eine doppelt verkettete Liste, die Sie implementieren müssen? – Slava

+0

@Slava Die exakt gleiche Schnittstelle wie für ListAsSLL – Keagansed

+0

Dann verstehst du nicht, wofür Dekorator Muster verwendet wird. Es wird verwendet, wenn Sie eine Schnittstelle benötigen und eine andere haben. Sie verwenden also einen Dekorator, um die erforderliche Schnittstelle bereitzustellen. Was Sie zu tun versuchen, steht in keiner Beziehung zum Dekorationsmuster. – Slava

Antwort

0

Hier ist ein Beispiel, wie es implementiert werden kann. Ich fügte eine andere virtuelle Methode createNode hinzu und zeige mögliche Implementierung von addToBeginning().

Code wurde nicht getestet, obwohl möglicherweise Logikfehler haben, wie geschrieben wurde, um allgemeine Idee zu zeigen.

Verwandte Themen