GRASP之多型性模式 - Kamil Grzybek
問題:如何根據型別處理替代方案?
解決方案:當相關的替代或行為因型別(類)而異時,將行為(使用多型操作)的責任分配給行為變化的型別。
多型性是物件導向設計的基本原則。在這種情況下,原則與(以及其他)戰略策略模式密切相關。
Customer類的建構函式 將 ICustomerUniquenessChecker介面作為引數:
public Customer(string email, string name, ICustomerUniquenessChecker customerUniquenessChecker) { this.Email = email; this.Name = name; var isUnique = customerUniquenessChecker.IsUnique(this); // doing - initiate and coordinate actions with other objects if (!isUnique) { throw new BusinessRuleValidationException("Customer with this email already exists."); } this.AddDomainEvent(new CustomerRegisteredEvent(this)); } |
我們可以根據需要提供此介面的不同實現。一般來說,當我們在我們的系統中具有相同輸入和輸出(在結構方面)的不同演算法時,這是非常有用的方法。
相關文章
- GRASP之間接模式 - Kamil Grzybek模式
- GRASP之控制器模式 - Kamil Grzybek模式
- GRASP 之資訊專家模式 - Kamil Grzybek模式
- GRASP之受保護的變化 - Kamil Grzybek
- 比SOLID更重要的與DDD設計相關的GRASP原則 - Kamil GrzybekSolid
- Clean清潔領域模型的幾個特點 -Kamil Grzybek模型
- C++之多型性小結C++多型
- C#之多型C#多型
- MongoDB – 使用模式構建之多型模式MongoDB模式多型
- java基礎篇之多型Java多型
- JAVA物件導向之多型Java物件多型
- 22. 物件導向之多型物件多型
- 物件導向 -- 三大特性之多型物件多型
- 介面之多種返回資料型別資料型別
- JavaScript之多小球非對心彈性碰撞JavaScript
- Java物件導向04——三大特性之多型Java物件多型
- java基礎(三)—–java的三大特性之多型Java多型
- 預測演算法之多元線性迴歸演算法
- High precision grasp pose detection in dense clutter
- DDD當前工程方法組合 - Kamil
- 多型性多型
- Using Geometry to Detect Grasp Poses in 3D Point Clouds3DCloud
- 一億農民:可持續轉型融資的突破性模式模式
- 行為性模式模式
- 多型性概述多型
- 設計模式-建立型-單例模式設計模式單例
- 好程式設計師Java學習路線分享三大特性之多型程式設計師Java多型
- 行為型命令模式模式
- 建立型-原型模式原型模式
- 結構型:策略模式模式
- 結構型-代理模式模式
- 【Android架構】基於MVP模式的Retrofit2+RXjava封裝之多Url(七)Android架構MVP模式RxJava封裝
- 結構性代理模式模式
- 建立型設計模式——抽象工廠模式設計模式抽象
- 設計模式之代理模式(結構型)設計模式
- MongoDB – 使用模式構建之屬性模式MongoDB模式
- C# 多型性C#多型
- python之多執行緒Python執行緒