해당 포스팅은 인프런 백기선님의 '리팩토링'을 학습 후 정리한 내용입니다.
public class Bill {
private ElectricityUsage electricityUsage;
private GasUsage gasUsage;
public double calculateBill() {
var electicityBill = electricityUsage.getAmount() * electricityUsage.getPricePerUnit();
var gasBill = gasUsage.getAmount() * gasUsage.getPricePerUnit();
return electicityBill + gasBill;
}
}
public class ElectricityUsage {
private double amount;
private double pricePerUnit;
public ElectricityUsage(double amount, double pricePerUnit) {
this.amount = amount;
this.pricePerUnit = pricePerUnit;
}
public double getAmount() {
return amount;
}
public double getPricePerUnit() {
return pricePerUnit;
}
}
public class GasUsage {
private double amount;
private double pricePerUnit;
public GasUsage(double amount, double pricePerUnit) {
this.amount = amount;
this.pricePerUnit = pricePerUnit;
}
public double getAmount() {
return amount;
}
public double getPricePerUnit() {
return pricePerUnit;
}
}
Bill 클래스의 calculateBill() 함수를 사용하여 전기, 가스 사용량에 대한 값을 return 해준다.
calculateBill() 함수에서 다른 객체의 getter 를 여러개 사용한다.
함수 옮기기를 사용하자!
public class Bill {
private ElectricityUsage electricityUsage;
private GasUsage gasUsage;
public double calculateBill() {
return electricityUsage.getElecticityBill() + gasUsage.getGasBill();
}
}
public class ElectricityUsage {
private double amount;
private double pricePerUnit;
public ElectricityUsage(double amount, double pricePerUnit) {
this.amount = amount;
this.pricePerUnit = pricePerUnit;
}
public double getAmount() {
return amount;
}
public double getPricePerUnit() {
return pricePerUnit;
}
public double getElecticityBill() {
return this.getAmount() * this.getPricePerUnit();
}
}
public class GasUsage {
private double amount;
private double pricePerUnit;
public GasUsage(double amount, double pricePerUnit) {
this.amount = amount;
this.pricePerUnit = pricePerUnit;
}
public double getAmount() {
return amount;
}
public double getPricePerUnit() {
return pricePerUnit;
}
public double getGasBill() {
return this.getAmount() * this.getPricePerUnit();
}
}