Wyobraźmy sobie sytuację, w której korzystamy z biblioteki, która pozwala tworzyć Circle
obiekty, w których można określić promień i środek okręgu, aby je zdefiniować. Jednak z jakiegoś powodu wymaga również wymaganego flavour
parametru. Powiedzmy teraz, że naprawdę muszę korzystać Circle
z własnej aplikacji, ale na potrzeby mojej aplikacji mogę ustawić smak za Flavours.Cardboard
każdym razem.
Aby to „rozwiązać”, tworzę własną Circle
klasę w innej przestrzeni nazw, która przyjmuje tylko radius
i center
jako parametry, ale ma niejawny konwerter na Circle
klasę biblioteki zewnętrznej, która po prostu tworzy Circle(this.radius, this.center, Flavours.Cardboard)
obiekt. Wszędzie, gdzie potrzebuję innego rodzaju Circle
, pozwalam na automatyczną konwersję.
Jakie są konsekwencje stworzenia takiej klasy? Czy są jakieś lepsze rozwiązania? Czy miałoby to jakąkolwiek różnicę, gdyby moja aplikacja była interfejsem API zbudowanym na tej zewnętrznej bibliotece, przeznaczonym do użytku przez innych programistów?
MakeCircle
funkcji ?
makePlayer
tym, że sama akceptuje tylko współrzędne, aby umieścić gracza, ale deleguje do znacznie bardziej złożonego konstruktora.