public class Order {
private boolean prime;
private boolean urgent;
private Product product;
public Order(Product product, boolean prime) {
this.product = product;
this.prime = prime;
}
public Order(Product product, boolean urgent) {
this.product = product;
this.urgent = urgent;
}
}
public class Order {
private boolean prime;
private boolean urgent;
private Product product;
public Order(Product product, boolean prime) {
this.product = product;
this.prime = prime;
}
public Order(boolean urgent, Product product) {
this.product = product;
this.urgent = urgent;
}
}
public class Order {
private boolean prime;
private boolean urgent;
private Product product;
public **Order**(Product product, boolean prime) {
this.product = product;
this.prime = prime;
}
public **Order**(Product product, boolean urgent) {
this.product = product;
this.urgent = urgent;
}
}
<aside> 💡 그렇다면 어떻게 만들어야 좋은 코드인가?
</aside>
public class Order {
private boolean prime;
private boolean urgent;
private Product product;
public Order(Product product, boolean prime) {
this.product = product;
this.prime = prime;
}
public Order(Product product, boolean urgent) {
this.product = product;
this.urgent = urgent;
}
}
public class Order {
private boolean prime;
private boolean urgent;
private Product product;
// 기본 생성자는 자동으로 만들어짐.
/*
public Order() {
}
public Order(Product product, boolean prime) {
this.product = product;
this.prime = prime;
}
public Order(boolean urgent, Product product) {
this.product = product;
this.urgent = urgent;
}
*/
public static Order primeOrder(Product product) {
Order order = new Order();
order.prime = true;
order.product = product;
return order;
}
public static Order urgentOrder(Product product) {
Order order = new Order();
order.urgent = true;
order.product = product;
return order;
}
}
public class Settings {
private boolean useAutoSteering;
private boolean useABS;
private Difficulty difficulty;
}
자바의 생성자는 매번 호출될 때마다 새로운 인스턴스를 만든다.
따라서 아무런 생성자를 만들지 않았더라도 이미 해당 생성자를 사용할 수 있다.
→ 매번 새로운 인스턴스가 만들어질 것임. (출력했을 때 해시코드가 서로 다른 것을 알 수 있다.)