本文為 C++ Software Design 書的第 24 節內容。
template<typename T,
typename Container = std::deque<T>>
class stack;
template<typename T,
typename Container = std::deque<T>>
class queue;
template<typename T,
typename Container = std::vector<T>,
typename Cmp = std::less<typename Container::value_type>>
class priority_queue;
比如說 std::stack 就是將 Container 類別裡的函數 adapt 成 stack 的函數,像是 top()、empty()、pop() 等等。除了 std::deque 以外,Container 也可以使用 std::vector 與 std::list。
從程式的結構與語法來看,Adapter pattern 與 Strategy pattern 非常類似。兩者主要的差別是在背後的動機:Adapter pattern 的目的是整合不同的 API 至現有的介面中;而 Strategy pattern 的目的是能夠從外面(也就是使用者)的角度設定此類的行為。另外相較於 Strategy pattern 來說,Adapter pattern 不需要每次都重新設定。
沒有留言:
張貼留言