Bir web hizmeti URL'sini bir nesne olarak temsil etmek istiyorum ve bir kalıtım hiyerarşisinde "köpürtülebilecek" birçok ortak parametrelerin bulunduğunu tespit ettim. Bir isteğin, bazı zorunlu ve diğer isteğe bağlı, çok sayıda parametresi olabilir. Bunun için Bloch's Builder modelinin iyi bir seçenek olduğunu ve akıcı bir arabirimle adlandırılmış argümanları taklit ettiğine inanıyorum.Kalıtım ile oluşturulacak desen kalıbı
Özellikle, genel web hizmeti
http://maps.googleapis.com/maps/api/service/output?{parameters}
service
ve output
zorunlu argümanlar vardır istek ve sensor
zorunlu parametre olarak sahip Google Haritalar web hizmeti API için tasarlıyorum. İsteğe bağlı language
parametresi de vardır.
Her hizmetin zorunlu ve isteğe bağlı parametreleri vardır. Geocode hizmeti, bounds
ve region
olmak üzere iki isteğe bağlı parametreye sahiptir. Ayrıca, hizmet türünü (sırasıyla, doğrudan veya ters coğrafi kodlama) belirten, address
veya location
numaralı karşılıklı zorunlu parametrelere de sahiptir. Bu karşılıklı dışlamayı yeni çocuk sınıflarıyla temsil ediyorum.
ben gibi sınıf hiyerarşisi düşünün:
.-----.
| Url |
'-----'
^
|
.---------.
| Request |
'---------'
^
|----------------------------+--------------...
.---------. .------------.
| Geocode | | Directions |
'---------' '------------'
^ ^
|------------+ .
.--------. .---------. .
| Direct | | Reverse | .
'--------' '---------'
Sonra ben böyle bir şey yapmak istiyorum şu:
String output = "xml";
boolean sensor = true;
String address = "Av. Paulista, São Paulo, Brasil";
Bounds bounds = new Bounds(-20, -10, -25, -20); //Geographic rectangle
String region = "br";
String lang = "pt-BR";
Coord location = new Coord(-12,-22);
DirectGeocodeRequestUrl direct =
new DirectGeocodeRequestUrl.Builder(output, sensor, address)
.bounds(bounds)
.language(lang)
.build();
ReverseGeocodeRequestUrl reverse =
new ReverseGeocodeRequestUrl.Builder(output, sensor, location)
.language(lang)
.region(region)
.build();
ben den argümanlar ve yöntemler kullanan bir Oluşturucu nasıl oluşturabilirim eklendiği sınıf ve süper sınıflar?
Beton sınıflarında getThis() 'in geçersiz kılınması soyut olmamalıdır. – Eric
@EricTobias Haklısınız, bir kopya-yapıştır tehlikesi. Sabit. –
Bu harika! Tam olarak aradığım şey! – Maddy