簡體   English   中英

繼承層次結構-如何拆分類

[英]Inheritance hierarchy - how to split class

我有一個為特定實體繪制圖形的類,圖形節點是可單擊的,因此,我具有用於單擊項的特定方法以顯示適當的信息。

因為這只是一個原型,所以我沒有考慮其他實體-要單擊的實體將完全不同。

我不確定如何使用繼承將其拆分,因此我將一個圖作為主要類,並根據哪個實體(繪制的圖類型)拆分了單擊項的相關方法,以便將它們分離到各自的空間中?

例如,一個類型的圖

Bannana-具有可點擊實體的皮膚,大小,顏色,數量

但是一個類型的圖

橙色-具有顏色,線段,橙色類型,數量

任何想法,對不起這個糟糕的例子:/

謝謝

根據節點類型的繼承關系,下面是一個實體的xml文件,它是如何繪制樹的。 其他實體的布局將類似,但具有不同的值。 這有助於清除一切嗎? 還可能值得一提的是,不同的實體將共享一些相同的項目,因此,例如,所有這些實體都可以單擊以查看復合圖像標簽

<graph>
  <node label="Batch">
    <node label="Searched Batch">
      <node label ="a batch number" />
    </node>
    <node label="Compound Number">
      <node label ="a compound number" />
    </node>
    <node label="Parent Number">
      <node label ="a parent number" />
    </node>
    <node label="Chemist Name">
      <node label ="Name 1" />
    </node>
    <node label="Quantity Available">
      <node label ="N/A" />
    </node>
    <node label="Molecular Formula">
      <node label ="a molecular formula" />
    </node>
    <node label="Notebook Number">
      <node label="a notebook number" />
    </node>
    <node label="Analytical Images">
      <node label ="show some pdf files" />
    </node>
    <node label="Who has Registered Batches">
      <node label ="Name 1" />
      <node label ="Name 2" />
      <node label ="Name 3" />
      <node label ="Name 4" />
      <node label ="Name 5" />
    </node>
    <node label="Chemical Structure" >
      <node label="Click to view compound image" />
    </node>
  </node>
</graph>

好的,我將從Graph基類開始。 由此,我將為每個從基礎Graph繼承的圖形類型創建一個子類。 幾乎可以肯定,基礎Graph類將具有一個Draw()方法來顯示圖形,這將被每個子類所覆蓋,從而允許分別繪制圖形。 在繪制每個圖時,您將使用適當的對象來表示圖及其所需的功能,在這里您將改變節點類型。

看看ZedGraph ,這是一個非常全面的圖形/圖表庫,該庫是開源的,因此您可以在那里瀏覽對象圖,並查看每種變化的圖表類型如何演變。

從圖的角度來看,我將對要在圖中顯示的對象使用一個接口,該接口應以一種通用的方式公開圖的屬性,例如鍵值對集合...

我建議您研究“ 復合訪客模式”

當然,您不僅需要繪制這些東西,而且還需要保留圖形,執行命令等。

如果將邏輯放入類層次結構本身中,它將最終變得龐大,並因條件邏輯,對UI組件的依賴性等而變得混亂。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM