zmienia się w zależności od ErrorHandling return _ptr;

private:

T * _ptr;

// Używanie:

struct Foo

void Bar() { }

SmartPtr<Foo, NoChecking<Foo> > ptrNoCheck = new Foo();

ptrNoCheck.Get()->Bar(); // Get() nie sprawdzane

SmartPtr<Foo, StrictChecking<Foo> > ptrChecked = new Foo();

ptrChecked.Get()->Bar(); // Get() sprawdzane

Aby dodać wsparcie dla np. wielowątkowości i liczenia referencji, i jednocześnie pozostawić użytkownikowi możliwość wyboru zachowania klasy, jak również dodawania własnych „strategii zachowań”, wystarczy dodać kolejne wytyczne. W przypadku stosowania innych technik, osiągnięcie podobnych rezultatów najprawdopodobniej nie byłoby tak łatwe.

Wytyczne są techniką użyteczną szczególnie dla twórców bibliotek i silników, ponieważ umożliwiają pisanie kodu, który może być w łatwy, przenośny, efektywny i bezpieczny typologicznie sposób rozszerzany przez użytkowników.

Przypisy

Linki zewnętrzne Przykładowy, pierwszy rozdział z powyższej pozycji, zawierający opis wytycznych (po angielsku) Zastosowanie wytycznych w grach komputerowych do stworzenia elastycznego systemu cząsteczkowego Przykłady wykorzystania wytycznych

Kategoria:Wzorce projektowe