相关疑难解决方法(0)

生成器模式与继承

我想将Web服务URL请求表示为对象,并发现有许多常见参数可以在继承层次结构中"冒泡".一个请求可能有很多参数,一些是必需的,另一些是可选的,我相信Bloch的Builder模式是一个很好的选择,用一个流畅的接口模拟命名参数.

具体来说,我正在设计Google Maps Web服务API,它具有一般的Web服务请求

http://maps.googleapis.com/maps/api/service/output?{parameters}
Run Code Online (Sandbox Code Playgroud)

service并且output是必需参数和sensor必需参数.还有一个可选参数language.

每个服务都有一组强制和可选参数.地理编码服务有两个可选参数,boundsregion.它还具有互斥的强制参数,address或者location指定服务类型(分别为直接或反向地理编码).我用新的儿童班来代表这种互斥.

我想象类层次结构如下:

  .-----.
  | Url |
  '-----'
     ^
     |
.---------.
| Request |
'---------'
     ^
     |----------------------------+--------------...
.---------.                 .------------.
| Geocode |                 | Directions |
'---------'                 '------------'
     ^                            ^
     |------------+               .
 .--------.  .---------.          .
 | Direct |  | Reverse |          .
 '--------'  '---------'
Run Code Online (Sandbox Code Playgroud)

然后,我想做类似以下的事情:

String output = "xml";
boolean sensor = true;
String address = "Av. Paulista, São Paulo, Brasil"; …
Run Code Online (Sandbox Code Playgroud)

java design-patterns builder

14
推荐指数
1
解决办法
8450
查看次数

标签 统计

builder ×1

design-patterns ×1

java ×1