2011-04-20 102 views
0

我希望對工作中的現有組件進行一些更改,並開始看到使用設計模式的優勢。問題是我有一些具體的例子,我正嘗試使用我在設計模式中學到的知識,並且遇到問題。 這是我想要做的。設計模式實例

我有一個現有的組件,可以監視n個不同的軟件包的性能,每個軟件包都適合特定的類型。 1型

  • 2型
  • 爲3型包C等程序包B即現有組件

    • 包A ....

    每個包做了一些性能。監控並有自己的數據日誌,記錄等。每個包現在只有一種類型。

    在將來,我們可以有一個新的功能出來爲

    - 包括一個分析日誌。這將具有已經存在的數據日誌並在其上添加一些其他數據。 - 爲一個包提供多種類型。例如,類型1,類型2(Bitype)的包A 類型1,類型2,類型3的包B(三角型)

    看着這個,我在考慮適配器模式可能在這裏使用。 我可以使用現有組件作爲適配器。然後在適配器類中執行新的功能。我的目標是添加2個功能的最終組件。 因爲,我在這裏處理現有的代碼,我想我應該添加一個適配器類來適應新的功能。但我有第二個想法,因爲適配器是用於使一個界面可用於另一個界面。這裏我有現有的接口,但我沒有目標接口已經存在。我將不得不同時創建適配器和目標。所以我很困惑,如果這個定義符合我的要求或不。

    有人對設計模式有一些經驗可以在這裏提出你的建議。 謝謝

    當然。該軟件是爲運動員。現有的系統跟蹤這些運動員的訓練細節。它有詳細的訓練日誌,他們喜歡什麼品牌和個人的細節等。有一個單獨的包爲一種類型的運動員創建。運動員類型是網球運動員,高爾夫球運動員,游泳運動員等。因此運動員只能在一種類型中,無論是網球運動員還是高爾夫球運動員,而不是兩者。將來需要包含更多的功能1.包含性能日誌(即採用已有的日誌並在其上添加性能日誌詳細信息)。 2.運動員可能存在重疊的興趣,即單個運動員可以參與多項運動。一個運動員可以參加網球,黃金和游泳。希望現在清楚。

  • +1

    我想我們需要了解一下目前的類結構以及這些類的實例之間的相互作用的更多細節。我不清楚'類型1的包A'實際上是什麼意思。你能列出你的監控組件知道的類,以及它對它們調用的方法嗎?監控組件是否瞭解類型,或只是包裝?每個類型/包與監視組件看起來是否相同,還是每個類都調用不同的方法? – tgdavies 2011-04-20 21:03:06

    +0

    當然..我更新了更具體的細節的帖子..請讓我知道你的意見。 – chamu 2011-04-21 05:38:15

    回答

    0

    我會爲每個公共組的信息創建一個接口,然後實現他們的伸手可及的類型的運動員,他們可以申請。

    interface IRunner 
    { 
        int AverageSpeed {get; } 
    
    } 
    
    interface IBallPlayer 
    { 
        int ShootingSpeed {get; } 
    } 
    
    class TennisPlayer : IBallPlayer; 
    class FootballPlayer : IRunner, IBallPlayer; 
    

    如果這不是你在找什麼,你必須更加具體,並給一些代碼示例來說明現有的代碼,並顯示你想要做什麼一些代碼示例。

    圖片(代碼)的價值超過千字。

    +0

    我更喜歡使用可用的設計模式,例如從Gang of 4 book。您的解決方案看起來更像是一般的解決方案不是特定於設計模式 – chamu 2011-04-21 06:24:34

    +0

    有沒有人有任何其他意見呢? – chamu 2011-04-21 21:55:17

    +0

    然後,您需要更具體,並通過代碼顯示問題。 – jgauffin 2011-04-22 04:15:24