Wyobraźmy sobie sytuację, w której korzystamy z biblioteki, która pozwala tworzyć Circleobiekty, w których można określić promień i środek okręgu, aby je zdefiniować. Jednak z jakiegoś powodu wymaga również wymaganego flavourparametru. Powiedzmy teraz, że naprawdę muszę korzystać Circlez własnej aplikacji, ale na potrzeby mojej aplikacji mogę ustawić smak za Flavours.Cardboardkażdym razem.
Aby to „rozwiązać”, tworzę własną Circleklasę w innej przestrzeni nazw, która przyjmuje tylko radiusi centerjako parametry, ale ma niejawny konwerter na Circleklasę 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 ?
makePlayertym, że sama akceptuje tylko współrzędne, aby umieścić gracza, ale deleguje do znacznie bardziej złożonego konstruktora.