2012-12-12 112 views
1

我正在尋找一個示例來展示如何結合這兩種設計模式(策略和複合)。我知道如何使用Strategy,但Composite對於我來說還不夠清楚,所以我真的不知道如何將它們結合起來。有人有例子或smthg?
乾杯組合複合和策略

+1

你爲什麼希望將它們組合?你有沒有需要這個的邏輯/業務問題? – ryadavilli

+2

用於解決問題的模式,不用於創建模式組合。你想解決什麼問題? –

回答

6

確定這是一個辦法做到這一點了藍色的(僞Java代碼):

interface TradingStrategy { 
    void buy(); 
    void sell(); 
} 

class HedgingLongTermStrategy implements TradingStrategy { 
    void buy() { /* TODO: */ }; 
    void sell() { /* TODO: */ }; 
} 

class HighFreqIntradayStrategy implements TradingStrategy { 
    void buy() { /* TODO: */ }; 
    void sell() { /* TODO: */ }; 
} 

class CompositeTradingStrategy extends ArrayList<TradingStrategy> implements TradingStrategy { 
    void buy() { 
     for (TradingStrategy strategy : this) { 
      strategy.buy(); 
     } 
    } 
    void sell() { 
     for (TradingStrategy strategy : this) { 
      strategy.sell(); 
     } 
    } 
} 

// sample code 
TradingStrategy composite = new CompositeTradingStrategy(); 
composite.add(new HighFreqIntradayStrategy()); 
composite.add(new HedgingLongTermStrategy()); 
composite.buy();