[英]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的定义。
更多关于这里 。
首先,确保你在谈论之间的紧耦合CountryService
和CountyService
,控制器和服务之间没有紧密耦合。
您提供的示例具有紧密耦合的服务和控制器,这从来都不是一件好事。 一个干净的控制器将在其构造函数中接受一个服务接口,而不是在具体的实现上做一个新的接口。
至于是否要合并CountryService
和CountyService
成CombinedService
,决定很简单:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.