当前位置: 首页 > 知识库问答 >
问题:

我应该在接口或抽象后面隐藏DTO和视图模型吗?

孙夕
2023-03-14
private readonly IGetTransactionsQuery _query;
private readonly ICreateTransactionCommand _createCommand;

public TransactionsController(
    IGetTransactionsQuery query,
    ICreateTransactionCommand createCommand)
{
    _query = query;
    _createCommand = createCommand;
}

[EnableQuery]
public IQueryable<ITransactionQueryModel> Get()
{
    return _query.Execute();
}

public async Task<IHttpActionResult> Post(ICreateTransactionModel transaction)
{
    if (!ModelState.IsValid)
    {
        return BadRequest(ModelState);
    }
    await _createCommand.Execute(transaction);
    return Created(transaction);
}

注意:我指的只是控制器“动作”方法,而不是构造函数,对于构造函数,拥有IoC的好处是显而易见的

共有1个答案

东门彬
2023-03-14

使用接口的常见原因有两个:

  1. 作为隐藏行为的抽象。
  2. 允许所有公开相同数据成员的一组类型作为相同类型使用。

抽象允许我们截取、模拟或替换行为,而不必更改这些类型的使用者。只有当此类类型包含任何需要扩展或替换的行为时,才需要这样做。

 类似资料:
  • 我想读关于抽象的文章,但读到不同的文章,我感到很困惑。 下面是我无法理解的问题: 1)“抽象是通过使用抽象类和接口实现的吗?”我对此进行了搜索,得到了三种类型的答案: 与此处解释的不同。 它们是相同的,只是不同的观点,就像这里解释的。 最后一个是抽象类用来实现抽象。 哪一个是真的?请举一个简单的例子。 2)“抽象意味着隐藏不必要的细节。比如专注于一个对象做什么而不是它是如何完成的。” 这是正确的吗

  • 在那里,我被告知接口和抽象类除了方法签名(名称、参数)和返回类型之外没有实现/方法体,所以通常我们写: 然而,我想知道我们能不能这样写: 因为它表明,当我们创建接口或抽象类时,返回类型可以在方法中

  • 在一次采访中,有人要求我说明什么时候选择接口类,什么时候选择抽象类,在什么条件下你将从这两个类中选择一个。我对界面做了分析,那就是... 接口是进行类型声明或定义多方合同的最佳选择。如果多个程序员在一个项目的不同模块中工作,他们仍然通过定义接口来使用彼此的API,而不是等待实际的实现就绪。 这在编码和开发方面给我们带来了很大的灵活性和速度。接口的使用还确保了最佳实践,如“为接口编程而不是实现”,并

  • 我浏览了很多帖子,但没有抓住要点。 我们能不能说:抽象=封装数据隐藏 或者不止这些!! 谢谢

  • 我目前正在从事一个项目,该项目允许第三方连接到我们产品的消息代理。任务是提供一个第三方可以使用的库。我希望能够将公共交通或NServiceBus与之一起打包,但我希望将该细节隐藏在接口后面。 我把服务车藏起来了。。。 供应商不应该被允许发布/发送消息,而应该只消费。如何隐藏消息的消费,以便打包服务总线库而不暴露正在使用的库? 编辑1使用大众交通消费消息如下所示 在引导过程中,当您创建服务总线实例时

  • 问题内容: 在面试中,有人问我以下问题。我试图回答这个问题,但是我想确切回答这个问题。 如果我可以将Abstract类模拟为Interface,为什么Java提供了Interface? 这意味着如果在Abstract类中我可以将所有方法标记为abstract,然后abstract类将用作接口,那么为什么我需要接口。 谁能简单地解释一下我。 问题答案: 这是一个非常标准的面试问题。答案是:因为您可以