簡介
基於事件的異步模式是 異步方法調用的一個變種,開銷更大但能更好的表現軟體組件對象。.NET框架和Java中的java.util.concurrent.FutureTask類中使用的 基於事件的異步模式使用事件來解決同樣的問題。
大部分程式語言中對方法的調用是同步執行的。例如線上程執行體內,即執行緒的調用函式中,方法的調用就是同步執行的。如果方法需要很長的時間來完成,比方說從Internet載入數據的方法,調用者執行緒將被阻塞直到方法調用完成。如果不希望調用被阻塞,則可以通過創建新的worker執行緒並在worker執行緒中調用方法,在大多數編程環中上這樣做可能需要很長的一段代碼,尤其是需要小心處理執行緒過多的額外開銷。 異步方法調用它通過使用一種立即返回的異步的變體並提供額外的方法來支持接受完成通知以及完成等待改進長期運行的(同步)方法。
活動對象(active object)設計模式通常使用異步方法調用。異步方法調用的一個替代方案是同步的方法調用和未來對象(future object)模式。在Web瀏覽器的實現上可以採用異步方法調用,例如瀏覽器需要在Web頁面中的圖像載入完成之前將頁面顯示出來。
異步IO
異步IO是計算機作業系統對輸入輸出的一種處理方式:發起IO請求的執行緒不等IO操作完成,就繼續執行隨後的代碼,IO結果用其他方式通知發起IO請求的程式。與異步IO相對的是更為常見的“同步(阻塞)IO”:發起IO請求的執行緒不從正在調用的IO操作函式返回(即被阻塞),直至IO操作完成。
設計模式
在軟體工程中, 設計模式(design pattern)是對軟體設計中普遍存在(反覆出現)的各種問題,所提出的解決方案。這個術語是由埃里希·伽瑪(Erich Gamma)等人在1990年代從建築設計領域引入到計算器科學的。
設計模式並不直接用來完成代碼的編寫,而是描述在各種不同情況下,要怎么解決問題的一種方案。面向對象設計模式通常以類別或對象來描述其中的關係和相互作用,但不涉及用來完成應用程式的特定類別或對象。設計模式能使不穩定依賴於相對穩定、具體依賴於相對抽象,避免會引起麻煩的緊耦合,以增強軟體設計面對並適應變化的能力。
並非所有的軟體模式都是設計模式,設計模式特指軟體“設計”層次上的問題。還有其他非設計模式的模式,如架構模式。同時,算法不能算是一種設計模式,因為算法主要是用來解決計算上的問題,而非設計上的問題。
隨著軟體開發社群對設計模式的興趣日益增長,已經出版了一些相關的專著,定期召開相應的研討會,而且沃德·坎寧安(Ward Cunningham)為此發明了WikiWiki用來交流設計模式的經驗。