Pergunta

Ei, oi eu quero colocar limite na criação de objetos significa que uma classe pode ter, na maioria das vezes, 4 objetos não mais do que isso como conseguir isso?

Foi útil?

Solução

Uma abordagem é usar uma fábrica de objetos que cria no máximo quatro instâncias. É uma necessidade interessante ... um pool de objetos serviria à mesma necessidade?

Outras dicas

Você pode contar os números de instâncias criadas usando uma propriedade estática para armazenar a contagem. Isso pode ser feito no construtor de classe ou você pode usar um padrão de fábrica. É um pouco difícil responder isso com mais precisão sem conhecer o idioma de destino.

Tente modificar o Singleton padronizar. Você pode usar uma variável de contagem. Você precisará manter o construtor privado para ter controle sobre o não. de instâncias.

Uma maneira de alcançar é o padrão de design de singleton, sempre que fizemos uma chamada para criar uma instância, verifique a contagem da instância que já foi criada, se a contagem de instância já for atingida 4 e use a mesma instância para o seu aplicativo. Para ter uma contagem, crie um contador estático int = 0; e continue incrementando -o para obter os resultados.

A maneira mais simples de fazer isso seria ter um atributo de nível de aula chamado "contagem" e, no seu construtor, apenas verifique se "Count" não está acima de um determinado número.

//pseudocode
class foo
  static count = 0

  def constructor()
    if count < 4
      //create object
    else
      //there are too many!

Este é o snipest de código curto que dará o resultado acima em 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();
       }
   }
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top