2012-04-13 4 views
0

オープンソースのツールキットに含まれるオブジェクトはすべて、AbstractObjectクラスに基づいています。 AbstractObjectに関数を追加して、まったく同じクラスのオブジェクトを作成して返したいと思います。クローンのようなメソッドのメソッド名の提案

これは、プロパティ値がコピーされないため、クローニングとは異なります。私はそれをduplicateと呼ぶことを考えましたが、ActiveRecordクラスを扱うときに混乱します(オブジェクトではなくレコードを複製するために複製が使用されるため)。

form2 = form1->createObjectWithSameClass() 

これには単一の単語(できれば)をお勧めします。私はあなたの時間を感謝します!ここでの情報に基づいて

+0

新しいオブジェクトは、その型を共有する以外にメソッドが呼び出されるオブジェクトに関連していますか? –

+0

オブジェクト実行時ツリー内で同じ親を共有します。 (ドームツリーのような)他のものはありません。 – romaninsh

+0

'make_sibling'?ありがとう。 –

答えて

2

が、これはあなたがスコープ内の変数と同じタイプの別のプレーンなオブジェクトをしたいように聞こえる、とタイプがオブジェクトを作成するときに必要なだけのコンテキストです。

この場合、インスタンスのハングオフ方法ではなくFactoryの有効なケースのように聞こえます。あなたはおそらく、行うことができます:

myFactory.create(form1)

または

myFactory.create(form1.getClass()) 

EDITを:これは、あなたの質問に直接答えではないですが、あなたは、ネーミングと懸念しているので、それゆえ私はの明快さと仮定しますコードの大きなメリットの1つは明快です(誰もがファクトリが何であるかを知っていますので、あなたが選んだ名前に混乱することはありません)。

+0

ありがとうございます。私はいくつかの選択肢を楽しみにしています。 – romaninsh

+0

私のミューズとして既存の規約を使用して、 'newInstance()'が 'Class.newInstance()'と同じ名前であるため、メソッドnewInstance()を呼び出す必要があります。あなたのコードの読者が 'Class.newInstance()'の動​​作を理解していれば、あなた自身の 'newInstance()'メソッドが同じことをすると思います。 – sethcall

+0

素晴らしいです。それは完璧な名前です。どうもありがとう。 – romaninsh

関連する問題