Я просто не мог понять, какой шаблон дизайна мне здесь выбрать.Скажем, у меня есть такой класс:
class Person
String role;
public void takeRole(String role) {
this.role = role;
}
public void do() {
switch(role)
case a:
do this and that;
this.role = b;
case b:
do this and that;
case c:
do this and that;
this.role=a;
....
Короче говоря, у Person есть роли, и метод do () зависит от его роли.В некоторых случаях ему, возможно, придется поменяться ролями.Я думаю, что do () следует абстрагировать (тем более, что в будущем могут быть определены другие роли) --- но как?Должен ли быть ролевый класс?
Буду признателен за любую помощь.
Редактировать:
Спасибо, что уделили нам время, люди.Я хотел бы добавить еще одну вещь.Я действительно думал (по крайней мере, как идея) о многих из предложенных решений.Вот мои трудности: если я подкласс класса Person (например, PersonTypeA, personTypeB и т. Д., И назначаю каждую конкретную роль для соответствующего типа человека, то у меня возникают трудности при переключении ролей (например, инженер становится бухгалтером!--- Странно, если не сказать больше.
С другой стороны, если я создаю классы для каждой роли, то (1) роль не ощущается как объект, потому что (по крайней мере, в моем случае)Роль не имеет атрибутов, а только метод (ы). Следовательно, role_A_1 ничем не отличается от role_A_2. Но для каждого человека мне придется создать новый объект роли - даже если они оба имеют одинаковую роль.
Я не уверен, дал ли я ясность, и не уверен, что мои пункты имеют смысл.