在.NET基础类库中是否有完整的构建器模式示例?我正在寻找一个具有实际指导者和多个具体构建器的示例。
在.NET基础类库中是否有完整的构建器模式示例?我正在寻找一个具有实际指导者和多个具体构建器的示例。
虽然我不是这方面的专家,但我认为DbCommandBuilder及其派生类(OdbcCommandBuilder、OleDbCommandBuilder、SqlCommandBuilder)可能是一个例子...如果抽象生成器基类也充当导演的话是可以的。各个具体类委托给它们的基类,然后调用像这样的方法(通过反射器):
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;
}
这满足了成为构建者(builder)的一些要求:
BuildDeleteCommand
,BuildInsertCommand
,BuildUpdateCommand
)DbCommand
),由具体类强制转换为特定命令类型,它比只是 SQL 字符串更加复杂,因为它有超时、命令类型、可能还有事务等。但是并没有单独的作为指导者(director)的类;实际上,DbCommandBuilder
基类就是指导者。
WebRequest.Create
计算在内,这是一种相当琐碎的构建方式。
ProcessStartInfo
和StringBuilder
都是作为简单的“一个构建器”示例而合理的。