本文為 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 不需要每次都重新設定。
沒有留言:
張貼留言