Duży zestaw parametrów, jak to często (ale nie zawsze) to wskaźnik, który może być używany obiekt do reprezentowania zestaw parametrów. Jest to szczególnie prawdziwe, jeśli:
Więc powyższy kod może stać się (przepraszam mój C++, jestem programistą Java):
class BuildVehicleBooking {
Long officeId;
Long start;
Long end;
String origin;
String destination;
String purpose;
String requirements;
Integer numberOfPassengers;
Booking createVehicleBooking() throws ServiceException { ... }
}
To Wzór Builder . Zaletą tego schematu jest to, że można zbudować złożony zestaw parametrów w częściach, w tym wiele odmian dotyczących wzajemnego powiązania parametrów, a nawet nadpisanie parametrów w miarę pojawiania się nowych informacji, zanim ostatecznie wywołają metodę create
na końcu. .
Inną potencjalną zaletą jest to, że można dodać metodę verifyParameters
, która sprawdzała ich konsystencję, zanim przejdziemy do ostatecznego obiektu o wartości creating
. Ma to zastosowanie w przypadkach, gdy tworzenie obiektu obejmuje nieodwracalne kroki, takie jak zapis do pliku lub bazy danych.
Należy pamiętać, że tak jak w przypadku wszystkich wzorów, nie ma to zastosowania w każdym przypadku i może nie mieć zastosowania w Twoim przypadku. Jeśli twój kod jest wystarczająco prosty, to ten wzorzec może nadużywać go. Jeśli kod jest coraz brudny, refactoring do tego schematu może być dobrym sposobem na jego uproszczenie.
Niestety nie sądzę, że mogę sobie z tym poradzić, ponieważ jest to punkt końcowy SOAP dla usługi internetowej, ale mimo to bardzo informatywny. – abarax
Możesz bezwzględnie stosować tę technikę, nawet w przypadku usług internetowych. Musisz uczynić klasę serializowalną i potencjalnie wdrożyć schemat w zależności od tego, czego używasz do hostowania usług sieciowych (oś, na przykład będzie wymagać, jak sądzę, a asp.net zajmie się dla ciebie) – Jeremy
Wzorzec budowniczego jest przydatny, dobra rada! Aby uzyskać całkowitą dominację nad światem (bezpieczeństwo wątków), upewnij się, że metoda create kopiuje wszystkie parametry przed sprawdzeniem poprawności. (Także, drobne wskazówki: używaj długich zamiast Lon, int zamiast Integer i zapewnij metody getter/setter.) – volley