.NET基类库中是否有完整构建器模式的示例?我正在寻找具有实际主管和多个具体建设者的公司。

最佳答案

我距离该领域的专家还很远,但是我认为DbCommandBuilder及其继承类(OdbcCommandBuilderOleDbCommandBuilderSqlCommandBuilder)可以作为示例……如果可以确定抽象构建器的基础全班还担任主任。各种具体的类委托给它们的基类,然后基类调用这些方法(每个Reflector):

private DbCommand BuildDeleteCommand(DataTableMapping mappings, DataRow dataRow)
{
    DbCommand command = this.InitializeCommand(this.DeleteCommand);
    StringBuilder builder = new StringBuilder();
    int parameterCount = 0;
    builder.Append("DELETE FROM ");
    builder.Append(this.QuotedBaseTableName);
    parameterCount = this.BuildWhereClause(
        mappings, dataRow, builder, command, parameterCount, false);
    command.CommandText = builder.ToString();
    RemoveExtraParameters(command, parameterCount);
    this.DeleteCommand = command;
    return command;
}


这满足了成为构建者的一些要求:


抽象生成器类
混凝土建造师课程
各种DbCommandBuilder方法(BuildDeleteCommandBuildInsertCommandBuildUpdateCommand)中的复杂多步骤构建
产品(DbCommand,由具体类转换为特定命令类型),它比SQL字符串复杂得多,因为它具有超时,命令类型,可能是事务等。


但是没有单独的班级担任导演。实际上,DbCommandBuilder基类是导演。

08-16 08:15