繁体   English   中英

OOP紧耦合。 我什么时候应该做?

[英]OOP Tight Coupling. When should I do it?

我已经实施了两项服务。 一个从Country API中提取数据,另一个从County API中提取数据。

我喜欢保持控制器整洁,因此很好奇将服务组合在一起而不是分开放置是个好主意。

我不确定是什么构成紧密的耦合以及何时合适。

我应该沿着这条路线走吗:

public async Task<IActionResult> Get(
        [FromQuery] double latitude, 
        [FromQuery] double longitude
    {
        var countryService = new CountryService();
        var countryData = await countryService.Get(latitude, longitude);

        var countyService = new CountyService();
        var countyData = await countyService.Get(latitude, longitude);

        return Ok(new Data(countryData, countyData);
    }

要么

public async Task<IActionResult> Get(
        [FromQuery] double latitude, 
        [FromQuery] double longitude
    {
        var combinedService = new CombinedService();
        Data combinedData = await combinedService.Get(latitude, longitude);

        return Ok(combinedData);
    }

当您在域级别上感觉到内聚时,紧密耦合是一个好主意。 在Eric Evans的DDD书中,定义了Bounded Context 这样考虑:两个部分共享多少信息/知识? 如果百分比很高,则最好将它们配对,因为它们已经在域级别上了。 这也类似于Larmans的GRASP对Information Expert的定义。

更多关于这里

首先,确保你在谈论之间的紧耦合CountryServiceCountyService ,控制器和服务之间没有紧密耦合。

您提供的示例具有紧密耦合的服务和控制器,这从来都不是一件好事。 一个干净的控制器将在其构造函数中接受一个服务接口,而不是在具体的实现上做一个新的接口。

至于是否要合并CountryServiceCountyServiceCombinedService ,决定很简单:

  • 如果您有至少一个仅使用其中一个而不使用另一个的客户端,请将它们分开
  • 压在一起是所有客户组合使用

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM