GRASP之間接模式 - Kamil Grzybek
問題:在哪裡指定責任以避免兩件或更多件事之間的直接耦合?
解決方案:將責任分配給中間物件以在其他元件或服務之間進行調解,以使它們不直接耦合。
這是Mediator Pattern的用武之地。而不是直接耦合:
public class CustomerOrdersController : Controller { private readonly IOrdersService _ordersService; public CustomerOrdersController(IOrdersService ordersService) { this._ordersService = ordersService; } } |
我們可以使用mediator物件並在物件之間進行調解:
public class CustomerOrdersController : Controller { private readonly IMediator _mediator; public CustomerOrdersController(IMediator mediator) { this._mediator = mediator; } public async Task<IActionResult> AddCustomerOrder( [FromRoute]Guid customerId, [FromBody]CustomerOrderRequest request) { await _mediator.Send(new AddCustomerOrderCommand(customerId, request.Products)); return Created(string.Empty, null); } } |
請注意這裡。間接支援低耦合但降低了整個系統的可讀性和推理。您不知道哪個類處理Controller定義中的命令。這是需要考慮的權衡因素。
相關文章
- GRASP 之資訊專家模式 - Kamil Grzybek模式
- GRASP之控制器模式 - Kamil Grzybek模式
- GRASP之多型性模式 - Kamil Grzybek多型模式
- 比SOLID更重要的與DDD設計相關的GRASP原則 - Kamil GrzybekSolid
- Clean清潔領域模型的幾個特點 -Kamil Grzybek模型
- GRASP模式模式
- 設計模式系列之代理模式(Proxy Pattern)——物件的間接訪問設計模式物件
- 設計模式之橋接模式設計模式橋接
- 設計模式之【橋接模式】設計模式橋接
- PHP 設計模式之橋接模式PHP設計模式橋接
- 設計模式之橋接設計模式橋接
- Java設計模式之(六)——橋接模式Java設計模式橋接
- Android設計模式之橋接模式Android設計模式橋接
- 我學設計模式 之 橋接模式設計模式橋接
- 設計模式(十三)----結構型模式之橋接模式設計模式橋接
- JAVA設計模式之 橋接模式【Bridge Pattern】Java設計模式橋接
- 跟著GPT學設計模式之橋接模式GPT設計模式橋接
- 星閃:咫尺之間,聯接智慧世界
- 橋接模式橋接模式
- 設計模式-橋接模式設計模式橋接
- 設計模式:橋接模式設計模式橋接
- 結構型模式之介面卡模式、橋接模式與裝飾器模式(一)模式橋接
- JS 橋接模式JS橋接模式
- Java進階篇設計模式之四 -----介面卡模式和橋接模式Java設計模式橋接
- 間接不是抽象抽象
- JavaScript面試系列:JavaScript設計模式之橋接模式和懶載入JavaScript面試設計模式橋接
- Java設計模式-橋接模式Java設計模式橋接
- 結構型模式:橋接模式模式橋接
- 小白設計模式:橋接模式設計模式橋接
- 設計模式(八)——橋接模式設計模式橋接
- javascript設計模式橋接模式JavaScript設計模式橋接
- 結構型模式----橋接模式模式橋接
- 設計模式(十二):橋接模式設計模式橋接
- JavaBridgePattern(橋接模式)Java橋接模式
- Swift-橋接模式Swift橋接模式
- 橋接模式(Bridge)橋接模式
- 08_橋接模式橋接模式
- GoLang設計模式19 - 橋接模式Golang設計模式橋接