2009-07-30 61 views
0

我想確定,如果(在我開始之前)在一個新項目上,我可以選擇一些合適的模式,這將隨着項目變得更加複雜而幫助開發。模式:渲染引擎​​允許編輯器集成?

場景

要具有在屏幕上繪製「簡單的」行的應用程序。理想情況下,我可以將其包含到Silverlight,WPF演示應用程序等中的「渲染引擎」中。我還需要使用渲染引擎執行大量顯示的編輯器應用程序,但它提供了諸如控制點移動有關屏幕&對話框線用於改變線等

目標的顏色

爲了保持渲染引擎specalised和高效。編輯器應該能夠將附加功能(即控制點的顯示)「注入」渲染引擎使用的對象或渲染引擎本身。我不想將任何編輯器特定的代碼編碼到渲染引擎中。

我的想法至今

我想使用將由渲染引擎使用對象的封裝/模板圖案的,在某種程度上允許編輯器應用程序提供類的對象, '控制'控制點的功能(例如移動控制點的事件處理)。

我喜歡這個想法背後的原因是渲染引擎永遠不需要知道它的工作環境。編輯器可以被廣泛地改變,而不必改變渲染引擎(希望)。

但是....

我可能是錯的,如果任何人都可以看到任何缺陷,或有解決這個問題的更好的方法的經驗,我很想聽到他們的聲音!

回答

1

我同意查理,你應該從一個簡單的設計原型開始,並根據需要擴展它(這就是我如何從我的map rendering engine開始)。我可以給你幾點建議,但:

  • 將繪圖引擎從代碼的其餘部分(here's an example how)分開。通過繪製引擎,我的意思是實際在屏幕/位圖上繪製某些東西的代碼。它應該消耗繪圖原語,而不是一些更高級別的實體。通過這種方式,您可以輕鬆切換繪圖引擎(例如:SVG,PDF,GDI,WPF ...)
  • 如果要使用編輯器,其中一種有用的模式是State pattern
1

那麼拍攝,這是一個令人印象深刻的預謀。

我的理念一直是,當您需要使用一個時,使用設計模式。否則,你可能會變成architecture astronaut,設計盛大的計劃都是徒勞的。在開發之前考慮設計是件好事,但實際上,在編寫代碼之前,您可能知道多少項目?幾乎沒有。如果你在編寫任何代碼之前強迫自己進入模式,那麼在應用程序的整個生命週期中,最終可能會將方塊插入圓孔中。

我給你的建議:先寫一個原型。快速和骯髒。沒有真正的設計;只是做一個走路的骨架。從中學習。如果您想到更好的方法,請廢棄原件並重新設計一個新的原件。當您添加功能時,請使用有意義的設計模式,而不是爲了添加功能。

+0

啊,你看到有很多方面,我知道模式將是有用的,例如撤消與編輯器的功能,添加裝飾模式等'特殊效果'。在某種程度上,我只是在等待某人說'不'噸使用單身'... – Ash 2009-07-30 22:01:53

+0

哦,我不否認模式的用處。它們非常有用。但在遊戲的這個階段,你沒有任何代碼或真正的理解你將如何解決問題。那麼你怎麼可能知道什麼樣的模式會最好地工作?您始終可以重構現有代碼以使用新模式。但是,如果你正在編寫所有新代碼並要求它適合一種模式,那麼在一段時間後可能會很艱難。 – Charlie 2009-07-30 22:12:14