2010-02-24 4 views
4

эй, привет, я хочу, чтобы ограничение на создание объекта означало, что класс может иметь не более 4 объектов не более того, как это сделать?OOPS (шаблоны проектирования)

+0

Это зависит от языка. На каком языке вас интересует? – 2010-02-24 05:14:05

+0

Стоит прочитать осуждение Стива Йегге шаблона Синглтона и посмотреть, не распространяется ли какое-либо из этих предупреждений: http://steve.yegge.googlepages.com/singleton-considered-stupid Клиенты вашего класса не должны знать, что существуют ограниченные экземпляры класса. Во-первых, это затрудняет модульный тест. – RossFabricant

+2

Что вы пытаетесь достичь в мире? –

ответ

10

Один подход заключается в использовании фабрики объектов, которая создает не более 4 экземпляров. Это интересная потребность ... Может ли пул объектов обслуживать одну и ту же потребность?

+1

+1 для ограниченного пула фабрик и объектов. – LiraNuna

+0

Класс Factory с пулом объектов или кешем был бы здесь. –

3

Вы можете подсчитать количество экземпляров, созданных с использованием свойства static class для хранения счета. Это можно сделать либо в конструкторе класса, либо вы можете использовать шаблон фабрики. Немного сложно ответить на это более точно, не зная целевого языка.

3

Попробуйте изменить Singleton pattern. Вы можете использовать переменную count. Вам нужно, чтобы Constructor был закрыт, чтобы иметь контроль над no. случаев.

+0

Этот вариант называется MultiTon :) – malaverdiere

+0

@mlaverd - Согласен :) – Padmarag

0

Самый простой способ сделать это - иметь атрибут уровня класса, называемый «count», и в вашем конструкторе просто убедитесь, что «count» не превышает определенное число.

//pseudocode 
class foo 
    static count = 0 

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

В этом случае каждый объект будет иметь свою собственную копию счета, всегда будет 0. Переменная count должна быть статической. – Padmarag

+0

Это псевдокод, он не должен быть совершенным. –

+0

, но при этом важно, чтобы все было правильно (как и сейчас) – peterchen

1

Одним из способов достижения является шаблоном Singleton Design, Всякий раз, когда мы делаем вызов для создания экземпляра, проверьте количество экземпляра, которые уже созданы, если количество экземпляра уже достигло 4, а затем использовать тот же экземпляр для вашего приложения. У вас есть счет, Creat Static Int Counter = 0; и продолжайте увеличивать его, чтобы получить результаты.

0

Это короткий код snippest, который даст результат, полученный выше в 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(); 
     } 
    } 
Смежные вопросы