設計モードのアダプタモード(C++実装)


設計モードでは、アダプタモード(英語:adapter pattern)もパッケージスタイルまたはパッケージと呼ばれる場合があります.1つのクラスのインタフェースをユーザが期待するものに転送する.インタフェースが互換性がないため、一緒に作業できないクラスを一緒に動作させるのに適した方法は、カテゴリ独自のインタフェースを既存のクラスに包むことです.
アダプタモードは2種類あります.
・オブジェクト・アダプタ・モード-このアダプタ・モードでは、アダプタは、私がラップしたクラスのインスタンスを収容します.この場合、アダプタは、ラップされたオブジェクトの物理エンティティを呼び出します.
・クラスアダプタモード−このようなアダプタモードでは、アダプタは、実装されたクラスを継承する(一般的には、多重継承によって実装される).
 
ここでは、このようなアダプタの良い例が思いつかないので、まずオブジェクトアダプタについて話しましょう.C++STLのスタックとキューはみんな知っていますよね?標準ライブラリに標準コンテナdeque両端キューがあり、サポートされています.
前の削除と挿入は、後の削除と挿入もサポートされていますが、私たちのqueueは前に出て後に出て、stackは後に出て、標準ライブラリは彼らを再定義することはできません.そして、ベースコンテナを借りて実現されています.デフォルトで使用されているdequeは、変更したい場合はvectorを使用することもできます.次のようにコードを書くだけです.
stack >  sta;
アダプタstackを完全に実装します.
template>  //         deque
class Stack
{
private:
	BaseCon stack;          //     
public:
	void push(Type elem)
	{
		stack.push_back(elem);
	}

	void pop()
	{
		stack.pop_back();
	}

	Type & top()
	{
		return stack.back();
	}

	bool empty()
	{
		return stack.empty();
	}

	signed int size()
	{
		return stack.size();
	}
};


int main()
{
	Stack> stack;
	for(int i=1;i<10;i++)
	stack.push(i);
	while( !stack.empty() )
	{
		cout<

私は个人的にSTLが好きで、彼のソースコードも研究したことがあって、最近もstlをまねて自分のライブラリを书くことを考えています
本題に戻って、このプログラムの中のsatckはつまり標準ライブラリの中で標準的に実現するスタックで、ただここで私は以前書いたメモリの分配器を見つけることができなくて、さもなくば完全にシミュレーションして改編することができて、このstackは容器のアダプタと呼ばれて、彼は既成のインタフェースで、自分の望むインタフェースに変わって、これはアダプタのモードで、標準ライブラリの中の反復器のアダプタで、反復アダプタのback_など、関数オブジェクトアダプタもこのモードを採用しています.Insert反復器は、標準容器を借りたpush_back関数は、必ずこの関数の容器があってこそ、このback_を使うことができます.Insert、信じるのもよく理解して、遅くなって、寝ました!!