哪一個是最好的方法來實現幾個訂單關係只有一個類?我對Strategy Pattern有個想法,但我不確定這是個好主意。如果沒有最好的辦法,爲什麼?爲一個類實現幾個順序關係?
-2
A
回答
1
創建一個仿函數類並使用您想要使用的順序關係初始化一個成員。有operator()
使用該成員來決定兩個操作數的順序。
class Ordering
{
public:
Ordering(int method) : _method(method) {}
bool operator()(const MyObject & first, const MoObject & second) const
{
switch(_method)
{
case 0:
return first.name < second.name;
case 1:
return first.age < second.age;
// ...
}
}
int _method; // an enum would be better
};
std::sort(myobjs.begin(), myobjs.end(), Ordering(selected_method));
+0
感謝您的回答! – Saroupille
0
我認爲戰略是這裏一個更好的辦法,我不是很肯定的開關結構是一個好主意(想象一下,在一個開關......太重1000個比較方法,是不是?)
所以讓A,一個需要方法比較的類。
我建議爲每個方法創建一個類,該實例將是A的組件。
例如:
class A{
private:
//Some attributes
Comparator<A> comp_;
public:
//Some methods (including constructor)
bool operator()(const MyObject & first, const MoObject & second) const
{
return comp_.compare(first,second);
}
void setComparator(Comparator<A>& comp){
comp_ = comp;
}
}
//Forgot the syntax about template. So there is a template with one parameter
class Comparator{
public:
//Constructor
//To overwrite on subclasses
virtual bool compare(T& first, T& second) = 0;
}
通過這種結構,可以方便地添加一個方法,不用修改,只需設置在程序執行的任何時刻的正確比較。
相關問題
- 1. 幾個聯繫模式的實現
- 2. LINQ:SubmitChanges上的幾個DeleteOnSubmit順序行爲
- 3. 試圖實現一個hasManyThrough類型的關係
- 4. 幹幾個類的ICloneable的實現
- 5. 創建一個類的唯一實例,當有幾個實現時
- 6. 表與幾個一個一對多的關係
- 7. 實現一個帳戶類
- 8. 實現一個UIViewController類
- 9. 試圖實現一個類
- 10. Yii的順序用的has_many關係的另一個表
- 11. 一對多關係的MySQL,順序按三個或更多表
- 12. 當幾個drupal模塊實現MODULENAME_template_preprocess時,它們的執行順序是什麼?
- 13. 從一個語句的順序中查詢幾個NEXTVAL
- 14. 如何實現一個功能到兩個不相關的類
- 15. JPA一個一對多的關係問題(上一個實體關係)
- 16. 從一個實體到另一個實體的雙重關係
- 17. 實體框架 - 一個類映射到與多兩個表一個關係
- 18. 是否有一個IdentityHashMap實現來維護插入順序?
- 19. 關係數據庫一個關係觸發另一個關係
- 20. 一個關係能否與另一個關係有關係
- 21. 幾個類共享另一個類的實例
- 22. 事件處理程序實現爲一個匿名內部類
- 23. Grails實現關係
- 24. 定義幾個Ajax調用的順序
- 25. StrutsSpringTestCase - 幾個上下文 - 如何按順序實例化它們
- 26. 哪個接口一個類實現?
- 27. 實現一對一的關係
- 28. 數據庫一對一關係實現
- 29. 關係數據庫設計 - 爲支付類型創建一個實體類?
- 30. Yii一個關係爲多個表
你的問題太含糊。你能詳細說明嗎?一個簡單的例子會很好 – DarthVader
對於這個問題,「最好」對你來說意味着什麼? – Caleb
我之前做過一些Java。我們可以使用CompareTo或Comparator。我想知道如何用C++工具模擬比較器的行爲。 – Saroupille