背景: 對其中嵌有多層嵌套形狀的圖形進行圖片處理。性質的變化,例如任何形狀的面積和長度都會導致所有相關的屬性和形狀發生變化。C#與內部設置器的接口
我有一個設計圖案,其是這樣的:
我有稱爲(爲討論起見),其具有噸它們彼此相關的屬性,例如「NestedShapes」一個對象圖,「區」和「長度」。但是圖表被設計爲愚蠢的,即給定任一值,它不知道如何計算另一個值,也不會這樣做。
相反,該圖可以附加到一個GraphManager,它在其構造器中採用頂級根節點IRootShape。
NestedShapes實現了IRootShape,它也實現了INotifyPropertyChanged。 GraphManager訂閱這些屬性更改,並運行邏輯來計算相關字段並通過IRootShape將圖形設置爲正確的狀態。
問題: 隨着IRootShape,我有IShape,ISquare,ICircle等是真正的C#接口。但問題出在這些屬性中的一部分,我只希望它們擁有GraphManager專用的setter。我知道實現形狀仍然可以暴露一個公共setter,但我不希望在UI側公開這些以便能夠從GraphManager中設置屬性。我該怎麼辦?內部基礎類是否需要走?
接口的定義是聲明應該是外部可見的。我敢說,基礎班將是你最好的選擇。 – 2012-01-12 01:32:07
如果你想要所有形狀的共同行爲,那麼他們需要從一個公共基類繼承。另外,爲什麼你需要'ICircle','ISquare'等單獨的接口?爲什麼不只是'IShape'。 – ja72 2012-01-12 02:12:46
@ ja72我想我會說IShape,ISquare,ICircle只有狀態。行爲在GraphManager中。 – Jake 2012-01-12 02:47:22