首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在.NET BCL中有生成器模式的示例吗?

在.NET BCL中有生成器模式的示例吗?
EN

Stack Overflow用户
提问于 2009-05-29 09:33:22
回答 2查看 1.1K关注 0票数 4

在.NET基类库中有完整构建器模式的示例吗?我正在寻找的东西,有一个实际的导演和多个混凝土建造者。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-06-04 04:33:18

我不是这个领域的专家,但是我认为DbCommandBuilder和它的继承类(OdbcCommandBuilderOleDbCommandBuilderSqlCommandBuilder)可能是一个example...if。抽象构建器基类也可以作为导向器。不同的具体类委托给它们的基类,然后基类调用这样的方法(每个Reflector):

代码语言:javascript
复制
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)
  • product (DbCommand,由具体类转换为特定命令类型)中的多步骤构建中,这比SQL字符串更复杂,因为它具有超时、命令类型、潜在的事务等。

但是没有单独的类充当控制器;实际上,DbCommandBuilder基类就是控制器。

票数 10
EN

Stack Overflow用户

发布于 2009-05-29 09:41:38

多个混凝土建造商?据我所知没有,除非你把WebRequest.Create计算在内,它是一种非常琐碎的建筑。

尽管如此,ProcessStartInfoStringBuilder作为简单的“一个构建器”示例都是合理的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/925176

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档