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多型模式
- GRASP之受保護的變化 - Kamil Grzybek
- 比SOLID更重要的與DDD設計相關的GRASP原則 - Kamil GrzybekSolid
- Clean清潔領域模型的幾個特點 -Kamil Grzybek模型
- 設計模式系列之代理模式(Proxy Pattern)——物件的間接訪問設計模式物件
- 設計模式之【橋接模式】設計模式橋接
- 設計模式之橋接模式設計模式橋接
- PHP 設計模式之橋接模式PHP設計模式橋接
- 設計模式之橋接設計模式橋接
- Java設計模式之(六)——橋接模式Java設計模式橋接
- 設計模式(十三)----結構型模式之橋接模式設計模式橋接
- 跟著GPT學設計模式之橋接模式GPT設計模式橋接
- 星閃:咫尺之間,聯接智慧世界
- 結構型模式之介面卡模式、橋接模式與裝飾器模式(一)模式橋接
- 設計模式-橋接模式設計模式橋接
- Java進階篇設計模式之四 -----介面卡模式和橋接模式Java設計模式橋接
- 間接不是抽象抽象
- Java設計模式-橋接模式Java設計模式橋接
- 設計模式 | 橋接模式(bridge)設計模式橋接
- 結構型模式:橋接模式模式橋接
- 設計模式(八)——橋接模式設計模式橋接
- 小白設計模式:橋接模式設計模式橋接
- JavaScript面試系列:JavaScript設計模式之橋接模式和懶載入JavaScript面試設計模式橋接
- 08_橋接模式橋接模式
- 極簡設計模式-橋接模式設計模式橋接
- GoLang設計模式19 - 橋接模式Golang設計模式橋接
- 9.設計模式-橋接模式設計模式橋接
- Java設計模式(7)----------橋接模式Java設計模式橋接
- ARC下OC物件和CF物件之間的橋接(bridge)物件橋接
- 設計模式學習-裝飾模式,橋接模式設計模式橋接
- 《設計模式》 - 6. 橋接模式( Bridge )設計模式橋接
- 設計模式之旅12--橋接模式設計模式橋接
- 設計模式(七)橋接設計模式橋接
- C#設計模式-橋接模式(Bridge Pattern)C#設計模式橋接
- High precision grasp pose detection in dense clutter
- 設計模式:橋接模式及程式碼示例、橋接模式在jdbc中的體現、注意事項設計模式橋接JDBC