Klastry klas zapewniają pojedynczy interfejs publiczny dla grupy konkretnych, prywatnych implementacji podklas. Programista z celem-c często używa klastrów klas i rzadko zdaje sobie z tego sprawę - i o to właśnie chodzi w klastrze klas. Zadaniem klastra klas jest ukrycie złożoności szczegółów implementacji za publicznym interfejsem.
Wiele klas Foundation to klastry klas, takie jak NSString, NSArray, NSDictionary i NSNumber. Kiedy wywołujesz [NSString stringWithFormat:]
klasę, klaster udostępnia konkretną klasę, która implementuje NSString
interfejs. To może być NSConcreteString
, NSCFString
, NSFooBarString
, itd. Które klaster klasa daje bazuje na konstruktora lub inicjator dzwonisz i argumenty.
Z tego powodu klastry klas są jedną z najbardziej inspirujących koncepcji programowania w języku Objective-C.
- Bardzo łatwe do wdrożenia
- Łatwo zmienić podstawową implementację bez zmiany kodu, który ją wywołuje.
- Łatwe udostępnianie różnych konkretnych implementacji w czasie wykonywania (np. Testowanie zasobów lub pozorowane obiekty)
- Z tego powodu jest łatwy do przetestowania i refaktoryzacji
Jeśli pochodzisz z innych języków, być może znasz wzorce Gang of Four. Klastry klas zawierają elementy zarówno abstrakcyjnej fabryki, jak i wzorów elewacji.
Publiczna dokumentacja firmy Apple dość obszernie obejmuje klastry klas (oraz sposoby ich implementacji i rozszerzania). Niestety odkryłem, że dla wielu programistów iOS ten i inne wzorce specyficzne dla Cocoa są martwym punktem.
Podstawowe kompetencje kakao: Klaster klas
Przewodnik po podstawach kakao: Klastry klas
Przykłady sposobów implementacji własnych klastrów klas są dostępne w witrynie GitHub