Android Как эффективно изменить многие переменные класса?(Может я убиваю ООП?) - PullRequest
1 голос
/ 20 марта 2012

У меня есть класс Android под названием Receipt, он смоделирован по типу квитанции, которую вы получаете в розничной среде, и включает следующие переменные класса:

receipt_number
date_ordered
date_paid
item_quantity
item_type
item_sku
item_price
total_price
customer_id
customer_name
clerk_id
clerk_name

Вот так ... много. Я просто привыкаю к ​​ООП, и, хотя мне нравится идея использовать класс данных Receipt для хранения свойств Receipt, я боюсь, что я использую объект только ради использования объекта и не использую классы данных надлежащим образом.

Почему? Ну, у меня есть другой метод в другом классе, которому я передаю свой объект Receipt. После подачи в этот другой класс данные квитанции используются для заполнения представления, которое позволяет пользователю редактировать указанную квитанцию ​​(данные из квитанции заполняют поля EditText, которые можно изменить, а затем сохранить). Проблема в том, что код становится нелепым для обновления квитанции. У меня есть вспомогательный метод в Receipt для практически каждой переменной выше (например, setClerkId (), setCustomerName (), setItemSku () и т. Д.), И когда я обновляю Receipt, я вызываю все эти методы, и он поворачивается в огромное крысиное гнездо.

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

Любой толчок в правильном направлении будет высоко ценится!

Спасибо!

1 Ответ

0 голосов
/ 20 марта 2012

Вы делаете это правильно, я думаю. Если у объекта много именованных свойств, вам придется много делать с get / set.

Вы можете упростить это, если вам не нужно обращаться к каждому по отдельности, если вы поместите их все в один (или несколько) ArrayList<String> / String[] или даже в другие объекты. Все, что вы чувствуете, является надлежащим представлением ваших данных.

Или вы берете HashMap вместо вашего класса и сохраняете их так:

HashMap<String, String> hashmap = new HashMap<String, String>();
hashmap.put("receipt_number", value);
String value = hashmap.get("receipt_number");

Это приводит к более динамичному способу хранения значений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...