웹 서비스 URL 요청을 객체로 나타내려고하고 상속 계층 구조에서 "부풀려 질 수있는"많은 공통 매개 변수가 있다는 것을 알았습니다. 요청에는 많은 매개 변수가있을 수 있으며, 일부 필수 및 기타 선택 사항이 있습니다. Bloch의 작성자 패턴은 유창한 인터페이스로 명명 된 인수를 에뮬레이션하는 좋은 옵션입니다.상속을 사용하는 작성자 패턴
특히, 나는 일반적으로 웹 서비스
http://maps.googleapis.com/maps/api/service/output?{parameters}
service
및 output
필수 인수입니다 요청 및 sensor
필수 매개 변수로이 Google지도 웹 서비스 API에 대한 설계하고있다. 선택적 매개 변수 language
도 있습니다.
각 서비스에는 필수 및 선택적 매개 변수 집합이 있습니다. 지오 코드 서비스에는 두 개의 선택적 매개 변수 bounds
및 region
이 있습니다. 또한 서비 스 유형 (각각 직접 또는 역 지오 코딩)을 지정하는 상호 배타적 인 필수 매개 변수 address
또는 location
도 있습니다. 나는이 새로운 상호 배제를 새로운 어린이 수업으로 대표한다.
내가 같은 클래스 계층 구조를 상상 :
.-----.
| Url |
'-----'
^
|
.---------.
| Request |
'---------'
^
|----------------------------+--------------...
.---------. .------------.
| Geocode | | Directions |
'---------' '------------'
^ ^
|------------+ .
.--------. .---------. .
| Direct | | Reverse | .
'--------' '---------'
그럼, 내가 좋아하는 일을하고 싶은 다음
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();
을 나는로부터 인수 및 방법을 사용하는 빌더를 만들 수있는 방법 그것이 삽입되는 클래스와 슈퍼 클래스?
구체적인 클래스의'getThis()'의 오버라이드 된 구현은 추상적이어서는 안됩니다. – Eric
@EricTobias 맞습니다. 복사 붙여 넣기의 위험이 있습니다. 결정된. –
이것은 놀랍습니다! 정확히 내가 무엇을 찾고 있었는지! – Maddy