μꡬ μ¬ν
μꡬμ¬νμ μ¬λ°λ₯΄κ² μ΄ν΄νμ§ λͺ»νλ©΄ μλ±ν κΈ°λ₯μ λ§λ€κ² λλ€.
(Garbage in , Garbage out)
-> μ½λ©μ μμ μꡬμ¬νμ μ¬λ°λ₯΄κ² μ΄ν΄νλ κ²μ΄ μ€μνλ€ !
λλ©μΈ λͺ¨λΈ
νΉμ λλ©μΈμ κ°λ μ μΌλ‘ ννν κ²μ λλ©μΈ λͺ¨λΈμ΄λΌκ³ νλ€.
λλ©μΈ λͺ¨λΈμ μ¬μ©νλ©΄ μ¬λ¬ κ΄κ³μλ€μ΄ λμΌν λͺ¨μ΅μΌλ‘ μ΄ν΄ν μ μμΌλ©°, μ¬λ¬κ°μ§ μ’ λ₯λ‘ λͺ¨λΈλ§ ν μ μλ€.
ex) κ°μ²΄ , μν λ€μ΄μ΄κ·Έλ¨, κ·Έλν
λλ©μΈ λͺ¨λΈ ν¨ν΄
λλ©μΈ κ³μΈ΅μ λλ©μΈμ ν΅μ¬ κ·μΉμ ꡬννλ€.
μλμ μ½λλ μ£Όλ¬Έ μνμ λ°λΌ λ°°μ‘μ§λ₯Ό λ³κ²½ν μ μλ κ°μ λν μ½λλ₯Ό λλ©μΈ λͺ¨λΈ ν¨ν΄μΌλ‘ ꡬν
public class Order {
private OrderState state;
private ShippingInfo info;
public void changeShippingInfo(ShippingInfo info) {
if(!state.isShippingChangeable()) {
// μμΈμ²λ¦¬
}
...
}
...
}
public enum OrderState {
PAYMENT_WAITING {
public boolean isShippingChangeable() {
return true;
}
}
...
}
νΉμ μ΄λ κ²λ ꡬνν μ μλ€.
public class Order {
private OrderState state;
private ShippingInfo info;
public void changeShippingInfo(ShippingInfo info) {
if(!state.isShippingChangeable()) {
// μμΈμ²λ¦¬
}
...
}
private boolean isShippingChangeable() {
return state == OrderState.PAYMENT_WAITING || ...
}
...
}
public enum OrderState {
PAYMENT_WAITING
...
;
}
μ€μν μ μ Order , OrderState κ°μ μ£Όλ¬Έ λλ©μΈ λͺ¨λΈμ ꡬν νλ€λ μ μ΄λ€.
μ΄λ κ² ν¨μΌλ‘μ¨ μꡬμ¬νμ΄ λ³κ²½λλλΌλ λ€λ₯Έ μ½λμ μν₯μ λ μ€ μ μλ€.
λλ©μΈ λͺ¨λΈ λμΆ
ꡬνμ μμνλ €λ©΄ λλ©μΈμ λν μ΄κΈ° λͺ¨λΈμ΄ νμνλ€.
λͺκ°μ§ μꡬμ¬νμΌλ‘ λΆν° ꡬνν΄μΌν κΈ°λ₯κ³Ό λ°μ΄ν°λ₯Ό μ μ μλ€.
ex)
μ΅μ ν μ’ λ₯ μ΄μμ μν μ£Όλ¬Έ -> λ‘μ§ κ΅¬ν νμ
ν μνμ ν κ° μ΄μ μ£Όλ¬Έν μ μλ€. -> ꡬ맀 μν μ 보λ μν κ°μλ₯Ό ν¬ν¨νλ€
μν°ν°
μν°ν°μ κ°μ₯ ν° νΉμ§μ μλ³μλ₯Ό κ°μ§λ κ²μ΄λ€.
μλ³μλ μν°ν°κ° μμ±λκ³ μμ±μ λ°κΎΈκ³ μμ ν λκΉμ§ λ°λμ§ μλλ€.
μ¦ μλ³μκ° κ°μΌλ©΄ κ°μ μν°ν°μ΄λ€.
μλ³μλ μ¬μ©νλ λλ©μΈμ νΉμ§κ³Ό μ¬μ©νλ κΈ°μ μ λ°λΌ λ¬λΌμ§λ©°, DBμμ μμ±ν΄μ£ΌκΈ°λ νλ€.
(μ΄ κ²½μ° DBμ μ μ₯ν΄μΌ μ μ μμ)
밸루(value) νμ
κ°λ μ μΌλ‘ μμ ν νλλ₯Ό ννν λ 밸루 νμ μ μ¬μ©ν μ μλ€.
private String receiverName;
private String receiverPhoneNumber;
//λ€μκ³Ό κ°μ΄ νν κ°λ₯
private Receiver receiver;
무쑰건 λ κ° μ΄μμ νλλ₯Ό κ°μ ΈμΌ νλ κ²μ μλλ€.
public class Money {
private int value;
public Money(int value) {
this.value = value;
}
}
λ€μκ³Ό κ°μ΄ μ μνμ valueλ₯Ό Money λ‘ ννν¨μΌλ‘μ¨ μλ―Έλ₯Ό λͺ ννκ² ν μ μλ€.
λν ν΄λΉ ν΄λμ€ λ΄μ λνκΈ° , κ³±νκΈ° κ°μ λΉμ¦λμ€ λ‘μ§μ μΆκ°ν μ μλ€.
밸루 νμ μ μμ ν μ½λ μμ±μ μν΄ λΆλ³μΌλ‘ νννλ€.
*λΆλ³ : λ°μ΄ν° λ³κ²½ κΈ°λ₯μ μ 곡νμ§ μμ
λλ©μΈ λͺ¨λΈμ΄ set λ©μλλ₯Ό λ£μ§ μλ μ΄μ
1. ν΅μ¬ κ°λ μ΄λ μλλ₯Ό μ½λμμ μ¬λΌμ§κ² νλ€.
// λλ©μΈκ³Ό μλκ° λͺ
νν¨
public void completePayment();
// νλκ°λ§ λ³κ²½νκ³ λ, μλκ° λͺ
ννμ§ μμ
pubic void setStatus();
2. λλ©μΈ κ°μ²΄λ₯Ό μμ±ν λ μ¨μ νμ§ μλ μνκ° λ μ μλ€.
Order order = new Order();
// set λ©μλλ‘ κ°μ μ λ¬
order.setOrderLines(lines);
λ§μΌ μμ κ°μ΄ set λ©μλλ‘ κ°μ μ λ¬νλ€λ©΄ λμ€μ νλκ° nullμΈμ§ κ²μ¬νλ μ½λκ° νμνλ€.
νμ§λ§ μμ±ν λλΆν° λͺ¨λ λ°μ΄ν°λ₯Ό λ°λλ€λ©΄ μμ±νλ μμ μ κ²μ¬νλ©΄ λλ―λ‘ ν΄λΉ λ‘μ§μ΄ νμκ° μμ΄μ§λ€.
λλ©μΈ μ©μ΄μ μ λΉμΏΌν°μ€ μΈμ΄
λλ©μΈ μ©μ΄λ₯Ό μ½λμ λ°μνμ§ μλλ€λ©΄ ν΄μνλλ° λΆλ΄μ΄ λλ€.
// λλ©μΈ μ©μ΄κ° λ°μλμ§ μμ
public OrderState {
STEP1,STEP2,STEP3,STEP4;
}
// λλ©μΈ μ©μ΄κ° λ°μλμ μ§κ΄μ μ
public OrderState {
PAYMENT_WAITING,PREPARING,SHIPPED,DELIVERING;
}
λλ©μΈ μ©μ΄μ μλ§μ λ¨μ΄λ₯Ό μ°Ύλ μκ°μ μκΉμνμ§ λ§μ!