拡張可能なライブラリを作成したいと思います。異なる基本オブジェクト手順にどのようなデザインパターンを使用するのですか
class Object
{
ActionProc* pAP;
};
class Sphere : public Object;
class Point : public Object;
class ActionProc
{
virtual Action(Object*) = 0;
};
class ActionProcMove : public ActionProc
{
bool m_bCanMove;
virtual Action(Object* obj)
{
if(m_bCanMove)
{
//do some moving stuff
}
};
};
そしてそうのようにそれを拡張するかもしれない、このライブラリのユーザー:ここでは大まかなコードのアウトラインです (再び、単にコードのアウトライン)
class ActionProcSize : public ActionProc
{
bool m_bCanSize;
virtual Action(Object* obj)
{
if(m_bCanSize)
{
//do some sizing stuff
}
};
};
これは動作しますが、それは意味します私は作成するオブジェクトオブジェクトごとに手続きオブジェクトを作成する必要があります。代わりに、私はそのタイプの手続きを必要とするすべてのオブジェクトのためのただ一つの手続きオブジェクトを作成したいと思うでしょう。
つまり、オブジェクトにリンクされたプロシージャに必要な余分な変数を格納する場所が必要です。
ちょうど例
そのように私はそれらを追加する代わりにActionProcsに向けることができるようにしたいと問題は彼らが状態を持っていることです – ColmanJ
それはあなたが "それらを追加する代わりにActionProcsに指示する"しかし、彼らは国家を持っているので、それらを追加する理由があるようです。 – stefaanv
私は指し示すことによって、同じポインタを持つ複数のオブジェクトを意味するので、実際には同じオブジェクトに指示します。今のようなものではなく、彼らは行動手続きにも向いていますが、各オブジェクトには独自のものがあります。 – ColmanJ