Wzorzec projektowy pełnomocnik należy do wzorców strukturalnych. Jego celem jest utworzenie obiektu, który kontroluje inny obiekt. Wzorzec ten może być wykorzystany np. do inicjacji zawartego wewnątrz obiektu dopiero w momencie próby wykonania na nim jakiejś operacji. Przyczyną takiego stanu rzeczy może być fakt, że obiekt nie zawsze będzie potrzebny a jego utworzenie jest czasochłonne.
Przykład diagramu UML dla wzorca projektowego pełnomocnik
Na poniższym diagramie UML można zobaczyć interfejs iImage oraz dziedziczące po nim klasy ImageProxy (będąca pełnomocnikiem) i Image (agregowana przez pełnomocnika). W tej implementacji klasa Image dysponuje statycznym konstruktorem createImage, który sprawdza, czy plik graficzny istnieje a następnie zwraca wskaźnik na nowo utworzony obiekt tejże klasy. Jeżeli plik nie istnieje zwracany będzie NULL.
Klasa ImageProxy tworzy obiekt klasy Image dopiero, gdy będzie wywołana po raz pierwszy metoda draw.
Rys. 1
Przykład diagramu UML dla wzorca projektowego pełnomocnik
Przykładowa implementacja wzorca projektowego pełnomocnik w C++