策略模式 簡單工廠使用排序演算法(c 實現)

2021-10-08 19:20:44 字數 1710 閱讀 5069

#include#include#includeusing namespace std;

//抽象排序演算法 //當成strategy來使用

class abstractsort

abstractsort() {};

virtual ~abstractsort() {};

virtual void sort() = 0;

void print()

cout << endl;

} void setnums(vectornums)

vectorgetnums()

};//氣泡排序 繼承自抽象排序

class bubblesort :public abstractsort ;

~bubblesort() {};

void sort()

void bubblesort(vector&nums)

}if (issort) break;

} }};//插入排序 繼承自抽象排序

class insertsort :public abstractsort

~insertsort() {}

void sort()

void insertsort(vector&nums)

nums[j + 1] = val;

} }};//選擇排序 繼承自抽象排序

class selectionsort :public abstractsort ;

~selectionsort() {};

void sort()

void selectionsort(vector&nums)

swap(nums[i], nums[min]);

} }};//簡單工廠

class sort******factory

else if (flag == "insertsort")

else if (flag == "selectionsort")

else

}};//簡單工廠和策略模式的結合

class sortcontex

else if (flag == "insertsort")

else if (flag == "selectionsort")

} void sort()

void print()

};//簡單工廠測試

//在簡單工廠模式下 客戶端需要認識兩個類

//乙個是工廠類 乙個是抽象排序類

void testsort******factory(vectornums) ;

for (string s : usesort)

delete factory;}/*

策略模式和簡單工廠的結合

客戶端只需要認識乙個類sortcontex

例項化乙個sortcontex 然後呼叫其sort和print方法就可以使用

降低耦合

*/void teststrategy(vectornums) ;

for (string s : usesort)

}int main()

testsort******factory(nums); //簡單工廠模式測試

teststrategy(nums);

system("pause");

return 0;

}

工廠 策略 》簡單使用

先看以下範例 public class promotions 不同的數字代表不同的打折方式 param num param totalprice return private static integer getprice int num,int totalprice return price pr...

策略模式和簡單工廠模式

策略模式和簡單工廠模式有什麼不同額?最近在學習設計模式,遇到這兩種模式,有點兒迷糊?簡單工廠模式 public class operation return result private double numbera 0 public double numbera set private doubl...

簡單工廠模式和策略模式

兩種模式如出一轍,基本方式都是通過將相同的行為封裝在乙個抽象父類 或介面 中,然後子類繼承該抽象父類並對該相同的行為進行不同的實現。簡單工廠模式 目的在於根據不同的條件建立不同的子類,工廠類的作用就是建立類。策略模式 比簡單工廠模式多了乙個context類,該類中保持對乙個策略父類的引用。該模式對策...