public class Boss
{
private string name;
private List<Hashtable> dogs;
private int limit;
public Boss(string name, int dogLimit)
{
this.name = name;
this.dogs = new List<Hashtable>();
this.limit = dogLimit;
}
public string Name { get { return this.name; } }
public void AddDog(string nickname, Dog dog)
{
if (!this.dogs.Contains(nickname) && !this.dogs.Count == limit)
{
this.dogs.Add(nickname, dog);
dog.AddBoss(this);
}
}
public void RemoveDog(string nickname)
{
this.dogs.Remove(nickname);
dog.RemoveBoss(this);
}
public void Hashtable Dogs { get { return this.dogs; } }
}
public class Dog
{
private string name;
private List<Boss> bosses;
public Dog(string name)
{
this.name = name;
this.bosses = new List<Boss>();
}
public string Name { get { return this.name; } }
public void AddBoss(Boss boss)
{
if (!this.bosses.Contains(boss))
{
this.bosses.Add(boss);
}
}
public void RemoveBoss(Boss boss)
{
this.bosses.Remove(boss);
}
public ReadOnlyCollection<Boss> Bosses { get { return new ReadOnlyCollection<Boss>(this.bosses); } }
}
Приведенное выше поддерживает отношения боссов могут иметь несколько собак (с наложенным ограничением) и собак, имеющих несколько боссов. Это также означает, что когда босс добавляет собаку, они могут указать псевдоним собаки, который является уникальным только для этого босса. Это означает, что другие боссы могут добавлять ту же собаку, но с разными никами.
Что касается лимита, я бы, вероятно, использовал его в качестве значения App.Config, которое вы только что прочитали перед созданием объекта (объектов) босса. Вот небольшой пример:
var james = new Boss("James", ConfigurationManager.AppSettings["DogsPerBoss"]);
var joe = new Boss("Joe", ConfigurationManager.AppSettings["DogsPerBoss"]);
var benji = new Dog("Benji");
var pooch = new Dog("Pooch");
james.AddDog("Good boy", benji);
joe.AddDog("Doggy", benji);
james.AddDog("Rover", pooch);
joe.AddDog("Buddy", pooch); // won't add as the preset limit has been reached.
Вы можете явно настроить это, как считаете нужным, однако я думаю, что основы того, что вы ищете, есть.
- Босс может иметь несколько собак с ограничением
- У собак может быть несколько боссов
- Боссы могут иметь разные псевдонимы для одной и той же собаки.