我想看看建造者模式在现实世界的应用/API中是如何使用的。我找到的例子都是比萨饼、蛋糕、汽车等(以及GoF书中的解析器示例)。
请告诉我一些这个模式在真实世界应用/API中的用途,最好来自C ++、.NET或PHP领域(因为这些是我熟悉的语言)。
谢谢。
我想看看建造者模式在现实世界的应用/API中是如何使用的。我找到的例子都是比萨饼、蛋糕、汽车等(以及GoF书中的解析器示例)。
请告诉我一些这个模式在真实世界应用/API中的用途,最好来自C ++、.NET或PHP领域(因为这些是我熟悉的语言)。
谢谢。
建造者模式被用于构建Json对象时的javax.json.Json
和javax.json.JsonBuilder
类中。
良好的解释在http://www.programcreek.com/java-api-examples/index.php?api=javax.json.JsonObjectBuilder,也可以查看其官方文档。
JsonObjectBuilder b = Json.createObjectBuilder().
add( "report", Json.createObjectBuilder().
add( "reportId", reportId ).
add( "title", title ).
add( "subtitle", subTitle == null ? "" : subTitle ).
add( "created", created.toString() ).
add( "description", description == null ? "" : description ).
add( "data", report )
);
return b.build();
实际上,一个非常好的现实生活中的例子是Active Record QueryBuilder示例。
你可以深入研究Laravel Eloquent模块并检查这些查询构建器类...
以下是一个快速示例:
interface SqlQueryBuilder
{
public function select(string $table, array $fields): SqlQueryBuilder;
public function where(string $field, string $value, string $operator = '='): SqlQueryBuilder;
public function limit(int $start, int $offset): SqlQueryBuilder;
// ... other methods
public function getSQL(): string;
}
class MysqlQueryBuilder implements SqlQueryBuilder
{
// ...
}
class PostgresQueryBuilder extends MysqlQueryBuilder
{
// ...
}