4

ねえ、こんにちは私はオブジェクトの作成に制限を設けたいのですが、これを達成する方法は、クラスが最大で4つのオブジェクトを持つことができることを意味しますか?

4

6 に答える 6

10

1つのアプローチは、最大4つのインスタンスを作成するオブジェクトファクトリを使用することです。これは興味深いニーズです...オブジェクトプールは同じニーズに対応しますか?

于 2010-02-24T05:12:07.743 に答える
3

静的クラスプロパティを使用して作成されたインスタンスの数をカウントして、カウントを格納できます。これは、クラスコンストラクターで実行することも、ファクトリパターンを利用することもできます。目標言語を知らずにこれにもっと正確に答えるのは少し難しいです。

于 2010-02-24T05:13:17.663 に答える
3

シングルトンパターンを変更してみてください。カウント変数を使用できます。を制御するには、コンストラクターをプライベートに保つ必要があります。インスタンスの。

于 2010-02-24T05:15:40.830 に答える
1

実現する1つの方法は、シングルトンデザインパターンです。インスタンスを作成するために呼び出しを行うときは常に、すでに作成されているインスタンスの数を確認し、インスタンス数がすでに4に達している場合は、アプリケーションに同じインスタンスを使用します。カウントするには、Creat Static Int Counter = 0; 結果を得るためにそれをインクリメントし続けます。

于 2010-03-11T08:47:56.717 に答える
0

これを行う最も簡単な方法は、「c​​ount」と呼ばれるクラスレベルの属性を設定することです。コンストラクターでは、「count」が特定の数を超えていないことを確認してください。

//pseudocode
class foo
  static count = 0

  def constructor()
    if count < 4
      //create object
    else
      //there are too many!
于 2010-02-24T05:15:47.147 に答える
0

これは、c#で上記の結果をもたらす短いコードスニッペストです

sealed class clsInstance
    {
        public static int count = 0;
        private static readonly clsInstance inst = new clsInstance();
        clsInstance()
        {

        }

        public static clsInstance Inst
        {
            get
            {
                if (count < 4)
                {

                    Console.WriteLine("object : " + count);
                    count++;
                    return inst;
                }
                return null;
            }
        }


    }

   class MainClass
   {
       public static void Main(String[] args)
       {
           clsInstance c1 = clsInstance.Inst;
           clsInstance c2 = clsInstance.Inst;
           clsInstance c3 = clsInstance.Inst;
           clsInstance c4 = clsInstance.Inst;
           Console.ReadLine();
           clsInstance c5 = clsInstance.Inst;
           Console.ReadLine();
       }
   }
于 2010-04-19T11:09:13.077 に答える