我想在C++中實現策略模式,但我有疑問。 Alwyas的策略模式示例比遵循代碼(在C#中)。我想修改客戶端,即MainClass,這樣選擇具體的策略將是動態的。 例如,通過main方法的args []參數傳遞策略名稱。我將如何在不修改這種模式的屬性的情況下實現這一點?策略模式C++
namespace StrategyPatterns
{
// Interface definition for a Sort algorithm
public interface ISort
{
void Sort(List<string> list)
}
// QuickSort implementation
public class CQuickSorter : ISort
{
void Sort(List<string> list)
{
// Here will come the actual imp
}
}
// BubbleSort
public class CBubbleSort : ISort
{
void Sort(List<string> list)
{
// The actual imp of the sort
}
}
public class Context
{
private ISort sorter;
public Context(ISort sorter)
{
// We pass the context the strategy to use
this.sorter = sorter;
}
public ISort Sorter
{
get{return sorter;)
}
}
public class MainClass
{
static void Main()
{
List<string> myList = new List<string>();
myList.Add("Hello world");
myList.Add("Another item");
Contexto cn = new Contexto(new CQuickSorter());
cn.Sorter.Sort(myList);
cn = new Contexto(new CBubbleSort());
cn.Sorter.Sort(myList);
}
}
}
這應該是哪種語言?至少1個拼寫錯誤和幾個語法錯誤..看起來更像C#? – 2013-02-25 02:08:14
作爲@KarthikT答案,你不能直接從C++中的字符串做到這一點,他的答案是一種方法。 「依賴注入」可能是一個很好的搜索術語,用於以各種方式查看用於執行此類事件的框架(包括一些動態的)。 – 2013-02-25 02:10:52