2008-09-19 43 views

回答

15

只崩潰軟件: http://www.usenix.org/events/hotos03/tech/full_papers/candea/candea_html/ 摘要

崩潰,只有程序崩潰安全,快速恢復。只有一種方法可以通過啓動恢復功能來阻止此類軟件(通過崩潰),並且只有一種方法可以將其啓動。只有崩潰的系統是由只有崩潰的組件構建的,使用透明的組件級重試會隱藏最終用戶的系統內部組件崩潰。在本文中,我們主張爲互聯網系統設計一個只有崩潰的設計,表明它可以導致更可靠,可預測的代碼和更快,更有效的恢復。我們提出關於如何構建這種僅基於崩潰的Internet服務的想法,並將成功的技術應用到其邏輯極端。

1

不,這是關於DP書和這個線程是關於特定的模式。

口譯員和飛錘從四人幫的書中浮現出來。

我認爲在Sw開發人員的工具箱中,Bridge和Mediator功能強大而且深沉。

+0

我喜歡你的帖子,但你可以添加一個關於你描述的模式的解釋。 – 2008-09-19 20:28:51

5

它更像是一種反模式,但我已經看到了我稱之爲「將它保留在一個地方」的模式。這是一個很大的應用程序,對於每個類,每個類,所有不是本地的變量都存儲在一個名爲P(用於參數)的類中。順便說一下,所有的靜態變量都保存在一個叫......等待的類中...... S.

無論如何,一些如何,這個項目變得相當大,突然之間,沒有任何工作。 (這段時間我受僱了)。令人驚訝的是,該程序沒有崩潰,它只是有很多的副作用,使應用程序運行扭曲。正如你可以想象的,多線程,全部訪問P和修改變量,沒有鎖定或同步。

我告訴你,這確實是一個看得見的景象。

該公司新開了一間辦公室,並聘請3人員工,我是其中之一。我們給予該計劃並告知解決該問題。我們花了幾天的時間坐在sla our我們的前途。現在我的臉上有一張透明的掌紋。

其他funnies ...名爲「fudgeFactor」的變量。仍然不知道做了什麼。

方法來獲得下一個ASCII字符...

char getNextChar(char previous) { 

switch (previous) 
case 'a': return b; 
case 'b': return c; 
... 
case 'z': return a; 
} 

無論如何,這是我的有趣圖案......有一些額外的側滑稽拋出。

+1

提醒我一些關於「日常跆拳道」的帖子:-) – 2008-09-19 20:47:23

2

訪客工作時卡住我的第一次一個圖形沉重的程序,作爲在複雜結構上進行操作的非常優雅的方式。

除了mvc(本身不是一個pattenr),這是關於它的複雜性和解決問題的潛力的「模式之王」。

2

福勒的Fluent Interface是一個相當有趣的模式。我對「抽象工廠」,「策略」和「國家模式」一直有一個很好的理解。

如果可以的話,我最近編寫了一個「模式」,我稱之爲Friend Class Pattern,有些人可能會發現有趣或有用的限制私人字段訪問器在沒有C++風格的朋友類的語言中的可見性。

+0

嗯,流利。 Linq是爲它而打造的。 – Dykam 2009-11-12 23:26:11

+1

我不知道我會將Linq描述爲流暢的界面。根據我的經驗,流暢的界面通常被設計爲可以像英語短語那樣讀取呼叫。流暢接口的方法通常是非常有狀態的 - 在不同時間調用相同的方法會產生截然不同的結果。 Linq更多的是組合一條將用於處理一組數據的管道。 Linq方法都不會改變任何狀態 - 它們只是返回一個新的對象。和Linq方法相比,「短語」y對我更感覺「方法」。但那只是我的個人意見。 – 2012-11-08 00:17:41

0

您將遇到的最有趣的設計模式就是您自己創建的模式,原因很明顯。

這並不是說它會是最好的設計模式,只是最有趣的。

0

直到我不得不直接使用ASM庫來操作Java字節碼時,我纔看到Visitor模式的重點。令人驚訝的是,這種模式簡化了什麼,否則這將是一項非常複雜的任務。

當您想編寫自己的重構插件時,該模式也用於大多數Java IDE中。您提供了一個Visitor對象,並通過AST傳遞,以進行所需的任何更改。

2

與其說是模式,而是依賴注入和反轉控制

4

爲去年我一直在做寫在LANSA一個Windows應用程序,其中的重點是通過具有設置的製表位的所有控件管理維護除了兩個隱藏的按鈕(PrevFocus和NextFocus)外= false。加載表單時,焦點被設置爲一個字段,並且該字段的名稱存儲在一個跟蹤變量中(應用名稱爲「FocusField」)。當用戶標籤(或換檔標籤)改變焦點時,運行相應按鈕的GotFocus事件。在該函數內部是一個case語句(select case FocusField)。基於當前關注的領域,運行驗證邏輯,並且可能焦點改變到另一個領域。

大多數控件的GotFocus事件查看FocusField的當前值,然後調用一個LostFocus函數,該函數爲FocusField執行相同的case語句工作,以便以前的焦點字段將得到驗證。正如你可能猜到的那樣,這使得不可能將用戶界面與邏輯分離開來,並且難以置信地維護它。重寫這些表單以使用驗證所有輸入的簡單Validate方法,並讓正常Tab鍵屬性(TabOrder,TabStop等)發揮其魔力,通常會使代碼減少50%,並且可靠性更高。

我不知道這個模式是從哪裏開始的,儘管它可能是由R​​PG /綠屏程序員轉爲編寫應用程序的WinForms開發人員所夢想的。

2

我記得我第一次看到GOF中的flyweight pattern。他們使用的例子是文字處理器;他們指出了使用獨立對象來表示每個角色的缺點。輕量級模式鼓勵將可共享的,內在的,不可變的狀態從不可修改的,外在的,可變的狀態中分離出來。對我來說,當時是那些「啊哈」之一。這些時刻確實拓寬了我的視野,並影響了我的設計到今天。

我的一位朋友建議策略模式本質上是祖先模式。許多其他模式(橋接,裝飾,代理,狀態......)只是Strategy的更精緻的應用。我記得有一段時間他和他爭論說,戰略與國家確實有區別。

相關問題