2015-05-24 6 views
3

У меня есть класс с (скажем) 50 полями. Я использую только несколько из них для развертывания программы для каждого пользователя. Есть ли способ сделать конструктор общим, но специфичным для развертывания?Конструктор со многими параметрами

например

public class Employee{ 

    private String id  = "default"; 
    private String empcat = "default"; 
    private String empfam = "default"; 
    private String phychar = "default"; 
    private String othchar = "default"; 
    private String shoesty = "default"; 
    private Double shoesiz = 0.0; 
    private String shoesty = "default"; 
    private Double shirsiz = 0.0; 
    private String shirsty = "default"; 
    .........50 other fields.. 
} 

"Пользователь/Клиент 1" - только хочет использовать эту программу для обуви и, таким образом, создает экземпляр объекта с:
Сотрудник obemp = новый сотрудник ("Джон", 11,5, Dockers) ; (Т.е. идентификатор, shoesiz и shoesty)

Пользователь/Клиент 2 - хочет использовать только программу для рубашки и, таким образом, создает экземпляр объекта с:
Сотрудник obemp = новый сотрудник ("Джон", 42, ABC); (Т.е. идентификатор, shirsiz и shirsty)

пользователя/клиента 3 - только хочет, чтобы использовать эту программу для семьи и, таким образом, создает экземпляр объекта с:
Сотрудник obemp = новый сотрудник («Джон», «Smith»); (т. е. id, empfam)

Порядок полей при создании объекта может быть различным - в зависимости от использования в модели.

+0

Хорошо, теперь я вижу ваш вопрос. Можете ли вы привести пример того, что означает «общий, но специфический»? Я не уверен, чего ты хочешь. Посмотрите на [Образец Builder] (http://en.wikipedia.org/wiki/Builder_pattern) – markspace

+1

. Лучшим подходом здесь будет шаблон Builder, например 'Employee e = Employee.ofName (« John »). OfSurname (« Смит ") .build()' –

+0

Не говоря уже о том, что это объектно-ориентированное программирование. Обувь - это один вид объекта, другая рубашка и т. Д. –

ответ

2

Прежде всего, я предлагаю разбить свой основной класс на меньшие части, которые управляют данными, которые обычно идут вместе (информация об обуви, информация о рубашке, семейная информация и т. Д.).

Во-вторых, я предлагаю вам предоставить клиентам builder pattern, чтобы упростить им создание объекта с помощью только тех частей, которые им могут понадобиться. Таким образом, они могут сделать что-то вроде этого:

Employee emp = new EmployeeBuilder("John") 
    .withShirtInfo(shirsiz, shirsty) 
    .build(); 
1

В базовом java нет общего способа для этого. Но вы можете использовать шаблон шаблона проектирования, например: -строитель.

Вы также можете создать Employee с минимальными критериями - id. Мы можем предположить, что у каждого Employee есть id. Таким образом, создать Employee с id помощью Employee(String id) конструктор -

public class Employee{ 

    //all properties 

    public Employee(String id){ 
     this.id = id; 
    } 

    //setter methods 
} 

Предположим, у вас есть создать Employee как это -

Employee employee = new Employee("eng134"); 

После этого вы можете установить только требуемое свойство для employee объекта с использованием методов инкубационных -

employee.setShoesiz(9); 
employee.setShirsiz(26); 
Смежные вопросы