πͺ½
"νλ¦° λ΄μ©μ΄ μμ μ μμΌλ©°, κΉμν μ μλμ μ€νλ§ κΈ°λ³ΈνΈμ μμ£Όλ‘ κ³΅λΆνμ΅λλ€."
βΊ μΈν°νμ΄μ€ (κΈ°λ³Έ μ€κ³λ)
public interface MemberRepository {
void save(Member member);
Member findById(Long memberId);
}
// μΆμ²: 1)κΉμνμ μ€νλ§ κΈ°λ³ΈνΈ
- public interfaceλΌκ³ μ μΈνλ©΄ κ·Έκ²μ΄ μΈν°νμ΄μ€κ° λλ€.
- μΈν°νμ΄μ€λ μΆμν ν΄λμ€λ‘ μΌλ°μ μΈ λ©μλ, λ©€λ² λ³μ ꡬμ±μ(μλ μ½λμ²λΌ)μ κ°μ§ μ μλ€.
- μΈν°νμ΄μ€λ μΆμλ©μλ(λ§λ€λ€ λ§ κ² κ°μ λ©μλ)μ μμ(finalμ μ΄μ©νμ¬ λ³νμ§ μλ μ΄λ€ κ°μ λ§λλ κ²)λ§ κ°μ§λ€.
- μΆμλ©μλλ public abstruct - λ‘ μμνμ§λ§, μμ μ½λμ²λΌ μλ΅ν΄λ 무κ΄νλ€.
- μμλ public static final -λ‘ μμνμ§λ§, μλ΅κ°λ₯νλ€.
- μ½κ² λ§ν΄ λΆμμ νλ―λ‘ μ¬μ©νκΈ° μν΄ λ€λ₯Έ λμ΄ νμνλ€!
- ν ν΄λμ€ νΉμ ν μΈν°νμ΄μ€μ μΈν°νμ΄μ€λ₯Ό λ€μ€ μμμ΄ κ°λ₯νλ€.
public interface Dog extends Animal, Pet {
void bark();
}
class Cat implements Animal, Pet {
public void cry() {
System.out.println("λμΉλμΉ!");
}
public void play() {
System.out.println("μ₯ μ‘κΈ° λμ΄νμ~!");
}
// μΆμ²: 3)TCP School
⺠ꡬν체 (ꡬ체μ μΈ μ€κ³λ)
@Component
public class MemoryMemberRepository implements MemberRepository{
private static Map<Long, Member> store = new HashMap<>();
@Override
public void save(Member member) {
store.put(member.getId(), member);
}
@Override
public Member findById(Long memberId) {
return store.get(memberId);
}
- implementsλ₯Ό ν΅ν΄ μΈν°νμ΄μ€ μμμ λ°λλ€.
- ꡬ체μ μΈ λ©μλλ₯Ό μμ±νλ€.
- κ°μ ν΄λμ€ λ΄μμ μΈν°νμ΄μ€μ ꡬν체λ₯Ό ν λ²μ λ£μ μλ μλ€.
Q. μΈν°νμ΄μ€λ₯Ό λ§λ μ΄μ λ?
A. μ¬λ¬ μ΄μ κ° μλλ°, κ°μ₯ ν° κ²μ μμ‘΄μ± λ¬Έμ μ΄λ€. ν΄λμ€λ μλ‘ μ½νμλ€. ν ν΄λμ€μ ν κΈ°λ₯μ λ΄λΉνκΈ° λλ¬Έμ νμμ 보λ₯Ό λ£κ³ λΉΌλ ν΄λμ€, νμ μ 보λ₯Ό μ μ₯νλ ν΄λμ€, μ£Όλ¬Έμ μ²λ¦¬νλ ν΄λμ€ λ± μ΄λ€ νλ‘μ νΈλ₯Ό ν λ μ¬λ¬ ν΄λμ€λ€μ΄ μλ‘ μ½νμκ² λλ€.
μμλ‘ νμμλ 10λ§μ μ΄μ ꡬ맀μ 10νΌμΌνΈ ν μΈνλ μ μ± μ΄μλλ°, μΆμλ§μ΄ μ΄λ²€νΈλ‘ 10λ§μ μ΄μ ꡬ맀μ 30νΌμΌνΈλ‘ ν μΈνλ μ μ± μ μλ‘κ² λ£λ κ²μ λ€μ΄λ³΄μ. κ·Έλ¬λ©΄ 30νΌμΌνΈ ν μΈνλ ν΄λμ€λ₯Ό λ§λ€ κ²μ΄λ€. μΈν°νμ΄μ€κ° μλ€λ©΄ μ£Όλ¬Έμ μ²λ¦¬νλ ν΄λμ€μ κ°μ μ½λλ₯Ό μ§μ μμ ν΄μΌνλ€. 10νΌμΌνΈ ν μΈ ν΄λμ€λ₯Ό μ μΈν΄λ¨κ² μ§λ§, 30νΌμΌνΈ ν μΈ ν΄λμ€λ‘ λ³κ²½ν΄μΌνλ€. κ·Έλ¦¬κ³ ν μΈ μ μ± μ μ¬μ©νκ³ μλ ν΄λμ€μ λ€μ΄κ° μ§μ μμ μ ν΄μ€μΌνλ λ²κ±°λ‘μμ΄ μκΈ΄λ€. λ κ·Έλ‘μΈν μ€λ₯λ λ°μνκ²λλ€.
κ·Έλ° μ€λ₯λ₯Ό μ€μ΄κΈ° μν΄ μΈν°νμ΄μ€λ₯Ό μ€κ°μ κ»΄λλ κ²μ΄λ€. A ν΄λμ€ - μΈν°νμ΄μ€ - B ν΄λμ€λ‘ λ§λ€μ΄ B ν΄λμ€κ° λ€λ₯Έ ν΄λμ€λ‘ λ체νλλΌλ A ν΄λμ€ μ½λμ μ§μ μ μΈ μμ μ΄ μλλ‘ λ§λλ κ²μ΄λ€.
λ¬Όλ‘ μΈνλ°μ κΉμν μ μλμ μ€νλ§κΈ°λ³ΈνΈμ λ£κ²λλ€λ©΄ μλ° μ€νλ§μ μμ‘΄μ± λ¬Έμ λ₯Ό μ΄λ€μμΌλ‘ ν΄κ²°νλμ§ λ μμΈνκ² μ μ μλ€.
Q. κ·Έλ λ€λ©΄ μΈν°νμ΄μ€ λ΄λΆμ μΆμλ©μλλ₯Ό λλ μ΄μ κ° λ¬΄μμΈκ°?
A. 첫λ²μ§Έλ μΈν°νμ΄μ€μ μ μλ λ©μλλ€μ ꡬ체ν΄λμ€μ κ°μ λ°λμ ꡬννκ² νκΈ° μν¨μ΄λ€. λ§μΌ μΈν°νμ΄μ€μ μ μλ λ©μλλ€μ ꡬν체μμ μ€ννμ§ μμΌλ©΄ μ»΄νμΌλ¬ μ€λ₯λ₯Ό λ°μμν¨λ€.
λλ²μ§Έλ μ 맀λͺ¨νΈνκ² λ©μλλ₯Ό μ μνμ¬ μ μ°μ±μ μ 곡νλ€. μκΉ μμ μ§λ¬Έμμ μμ νλ―, ν μΈ μ μ± μ΄ λ³κ²½λ μ μΈν°νμ΄μ€κ° ꡬ체μ μΈ λ©μλλ‘ μ μλμ΄μλ€λ©΄ μΈν°νμ΄μ€μ μ½λλ μμ ν΄μΌνλ€. μΆμλ©μλλ‘ λ¬ λ©μλμ μ΄λ¦λ§ λ§μΆ° ꡬ체ν΄λμ€λ₯Ό μμ±νκ² λλ©΄ κ°μͺ½κ°μ΄ λ°λκ² λλ€. (μ΄ κ²½μ° μΈν°νμ΄μ€μ ꡬνλΆλ₯Ό μ΄μ΄μ£Όλ ν΄λμ€κ° λ°λ‘ μ‘΄μ¬ν΄μΌνλ€.)
Q. ν΄λμ€λ ν΄λμ€μκ² λ€μ€ μμμ΄ μλμ§λ§ μΈν°νμ΄μ€λ κ°λ₯νλ€. μ κ·Έλ°κ²μΌκΉ?
A. λ€μ΄μλͺ¬λ λ¬Έμ λ₯Ό μ λ°νκΈ° λλ¬Έμ΄λ€. ν ν΄λμ€κ° λ€λ₯Έ λ ν΄λμ€μκ² μμμ λ°μλ€κ³ κ°μ νμ. λ ν΄λμ€μ κ°μ λ©μλ μκ·Έλμ² (λμΌν μ΄λ¦, λμΌν 맀κ°λ³μ)κ° μλ€λ©΄ νμ(μμμ λ°μ) ν΄λμ€λ νΌλνκ² λλ€. μ΄λ€ μμ ν΄λμ€μμ λ©μλλ₯Ό λ°μμ¬μ§ λ§μ΄λ€. κ·Έλ κΈ°μ ν΄λμ€λ ꡬ체μ μΌλ‘ λ©μλλ₯Ό μ μνκΈ° λλ¬Έμ λ€μ€μμμ΄ μλλ€.
νμ§λ§ μΈν°νμ΄μ€λ μΆμμ μΈ λ©μλλ₯Ό μ μνκΈ° λλ¬Έμ λ©μλ μκ·Έλμ²κ° κ°μλ 무κ΄νλ€.
1) κΉμνμ μ€νλ§ κΈ°λ³ΈνΈ μΆμ²
2) μΈν°νμ΄μ€ μ΄μ 리 μΆμ²