Я очень новичок в java и немного устаю от своих ног. Я пытаюсь создать простую бюджетную программу для моей жены и меня. У меня довольно много классов, которые я все еще участвую в организации, но мой основной вопрос для этого потока касается моего интерфейса.Как реализовать интерфейс?
Это выглядит следующим образом:
package com.budgeter;
public interface Category {
void setPersonalLoan(int budget);
void setDonationsGifts(int budget);
void setRecreation(int budget);
void setHouseHoldItems(int budget);
void setUtilities(int budget);
void setSavings(int budget);
void setGroceries(int budget);
void setAutoInsurance(int budget);
void setAutoPayment(int budget);
void setHomeInsurance(int budget);
void setHomePayment(int budget);
}
Я понятия не имею, если этот интерфейс будет сделано в соответствии с лучшей практикой или нет, но моя цель состоит в том, чтобы иметь возможность иметь определенный набор категорий. Затем у меня есть другой класс под названием BillCategory
, который я могу использовать для добавления настраиваемой категории. Опять же, не уверен, что это правильный способ использования интерфейса.
Поэтому я использую этот интерфейс таким образом:
package com.budgeter;
public class Bills implements Category {
private Double amount;
private Double totalBills;
public Bills() {}
public Bills(double amount) {
setTotal(amount);
}
private void setTotal(Double amount) {
this.amount = amount;
totalBills = amount;
}
public Double getTotal() {
return totalBills;
}
@Override
public void setPersonalLoan(int budget) {
// TODO Auto-generated method stub
}
@Override
public void setDonationsGifts(int budget) {
// TODO Auto-generated method stub
}
@Override
public void setRecreation(int budget) {
// TODO Auto-generated method stub
}
@Override
public void setHouseHoldItems(int budget) {
// TODO Auto-generated method stub
}
@Override
public void setUtilities(int budget) {
// TODO Auto-generated method stub
}
@Override
public void setSavings(int budget) {
// TODO Auto-generated method stub
}
@Override
public void setGroceries(int budget) {
// TODO Auto-generated method stub
}
@Override
public void setAutoInsurance(int budget) {
// TODO Auto-generated method stub
}
@Override
public void setAutoPayment(int budget) {
// TODO Auto-generated method stub
}
@Override
public void setHomeInsurance(int budget) {
// TODO Auto-generated method stub
}
@Override
public void setHomePayment(int budget) {
// TODO Auto-generated method stub
}
}
Вот мой BillCategory
класс, который я использую, чтобы добавить новую категорию, но не совсем уверен, как связать это мой интерфейс:
package com.budgeter;
import java.util.HashMap;
import java.util.Map;
public class BillCategory {
private static Map<String, Integer> categories = new HashMap<String, Integer>();
public void addCategory(String categoryName, int frequency) {
categories.put(categoryName, frequency);
}
public Map<String, Integer> getCategories() {
return categories;
}
}
- Что является наиболее эффективным способом проверить, был ли установлен элемент, а затем рассчитать все из них для моего метода
getTotal()
? - Я правильно использую интерфейс?
- Я использую хорошее соглашение об именах (например, категория)?
- Метод
setTotalAmount()
Я не был уверен, должен ли я передать ссылку наamount
или установитьamount
с помощьюthis.amount = amount
, а затем получить доступ к нему по всему миру. Есть ли лучшая практика для этого? - Каков наилучший способ связать класс
BillCategory
с интерфейсом?
Что рекомендовал бы назвать интерфейс? И вы могли бы привести мне пример для вашего последнего абзаца? Большое спасибо за то, что нашли время, чтобы объяснить это! –
Если название категории имеет смысл для вас, то сохраняйте его таким образом, просто помните, что интерфейсы должны быть универсальными и реализовываться несколько раз. Поэтому, если вы собираетесь использовать другую реализацию, и оба класса и векселя являются одновременно категориями, то они отлично работают. Я приведу еще один код для примера последней части. – chancea
Я не был уверен, что назвать интерфейс, так как у меня также есть другой класс (не показан) с именем 'BillCategory', который я использую для' addCategory() '. Я полагаю, что 'BillCategory' будет лучшим именем для интерфейса? –