CQS 命令 查詢分離原則

2021-09-30 09:11:32 字數 511 閱讀 5211

摘自《uml和模式應用》

命令-查詢分離原則(command-query separation principle).

cqs是針對方法的經典oo設計原則. 該原則指出, 任何方法都可能是如下情況之一:

1. 執行動作(更新,調整...)的命令方法, 這種方法通常具有改變物件狀態等***, 並且是void的.

2. 向呼叫者返回資料的查詢, 這種方法沒有***, 不會永久性的改變任何物件的狀態.    

關鍵是, 乙個方法不應該同時屬於以上兩種型別.

cqs被公認為電腦科學理論中具有價值的原則. 因為遵守該原則, 你能夠更容易的推測出程式的狀態, 在查詢狀態時不會同時發生變更. 這樣使得設計更便於理解和預見.

例如, 如果一致遵循cqs, 那麼你還知道查詢或者getter方法不會作出任何更改, 而命令也不會有任何返回. 這是個簡單的模式. 這通常是要嚴格遵循的, 因為如果突然採用其它方法, 將會產生令人不快的意外, 從而違反了ood中的 最小意外(least surprise) 原則.

討論一下CQS 命令 查詢 分離 原則

d 看craig larman的書,裡面提到的這個原則.請看下面兩個函式 style 1 used in the official solution public void roll public int getfacevalue 為什麼不是將兩個方法合併,使roll 方法返回新的facevalue...

CQRS 命令查詢職責分離

cqrs command query responsibility segregation 一種奇怪的開發體驗,除了頻繁的切換資料夾,但整個業務思路是非常清晰的的。一 什麼是cqrs 在cqrs中,c command 是用來進行cud的,q query 則是對應查詢。每乙個command都必然改變物...

介面分離原則

採用多個與特定客戶類有關的介面比採用乙個通用的涵蓋多個業務方法的介面要好。isp原則是另外乙個支援諸如com等元件化的使能技術。缺少isp,元件 類的可用性和移植性將大打折扣。這個原則的本質相當簡單。如果你擁有乙個針對多個客戶的類,為每乙個客戶建立特定業務介面,然後使該客戶類繼承多個特定業務介面將比...