Я надеюсь сформулировать мой вопрос правильно (если нет, пожалуйста, помогите мне дать ему лучшее название), чтобы прояснить его, пожалуйста, посмотрите на мой код.
class Factory
{
public string Name { get; set; }
private Person _manager;
public Person Manager
{
get
{
return (_manager );
}
set
{
_manager = value;
if (_manager.WorkPlace!=this)
{
_manager.WorkPlace = this;
}
}
}
public Factory(string name, Person manager)
{
Name = name;
Manager = manager;
if (Manager.WorkPlace ==null)
{
Manager.WorkPlace = this;
}
}
public Factory(string name, string managerFullName, int managerAge)
{
Name = name;
Manager = new Person(managerFullName, managerAge);
if (Manager.WorkPlace != this)
{
Manager.WorkPlace = this;
}
}
public void ShowInfo()
{...}
}
появляется моя проблемапри использовании первого конструктора фабричного класса
class Program
{
static void Main(string[] args)
{
Person oPerson1=new Person("Jon",30);
factory oFactory1=new Factory("f1",oPerson1);
factory oFactory2=new Factory("f2",oPerson1);
factory oFactory3=new Factory("f3",oPerson1);
factory oFactory4=new Factory("f4",oPerson1);
...
}
}
, как вы можете видеть в этом конструкторе , я могу использовать один объект персонажа (в качестве ясеня) более одного раза, фактически много разэто можно использовать, и ничто не мешает мне .это означает, что один человек может управлять многими фабриками, я не хочу этого. Я хочу, чтобы человек мог управлять только одной фабрикой , как это возможно?
чтобы справиться с этой проблемой, мне в голову пришли некоторые обходные пути.1 - удаление этого конструктора и использование только другого. (Но я ищу лучшее решение, я хотел бы иметь этот конструктор.)2 - выдает исключение во время выполнения, которое я ненавижу
, так как я знаю, что компилятору c # нечего не препятствовать передаче объекта более одного разая должен изменить что-то в дизайне класса?какова ваша рекомендация?Какое лучшее решение? Спасибо большое за любые советы.
РЕДАКТИРОВАТЬ: Наша бизнес-логика
на каждом заводе есть менеджер, егобессмысленно иметь фабрику без менеджера.
и человек может быть менеджером.
человек (1..1) ------------ (0..1) завод