我在尋找一款適合以下規格的設計圖案:對於在其外部進行修改的軟件包,最佳模式是什麼?
1-假設您有包裝動物,包括'動物','貓'和'狗'。
2-您必須修改'動物'中的方法行爲(也可以像在包中一樣在「貓」和「狗」中重寫),而不對包動物源代碼進行任何修改。
我確實爲這種目的找到訪問者模式,但問題是您必須修改包動物源代碼,包含'實施'包括接受方法的Visitable接口。但是,這是不允許的。
你有什麼建議?
我在尋找一款適合以下規格的設計圖案:對於在其外部進行修改的軟件包,最佳模式是什麼?
1-假設您有包裝動物,包括'動物','貓'和'狗'。
2-您必須修改'動物'中的方法行爲(也可以像在包中一樣在「貓」和「狗」中重寫),而不對包動物源代碼進行任何修改。
我確實爲這種目的找到訪問者模式,但問題是您必須修改包動物源代碼,包含'實施'包括接受方法的Visitable接口。但是,這是不允許的。
你有什麼建議?
我對規格不太確定,但是您可以使用裝飾工具在動物包外創建類,它將使用組合來擴展正常行爲。
我同意@Gabriel,裝飾模式可能是一個很好的開始。易於理解的例子可以在Holger Kreissl's Devblog的Decorator Pattern in C#處找到。