역할 책임 → 의존성을 어떻게 관리하는지?
설계란? 코드를 어떻게 배치할 것인가에 대한 의사결정
어떤 패키지에? 어떤 클래스에? 어떤 코드를 넣을 것인가?
→ 변경에 초점을 맞춰라! 같이 변경되는 코드를 같은 패키지 클래스에 넣어야 함
A가 B에 의존성이 있다 → B가 변경되면 A도 변경될 수 있음 (B가 변경되더라도 A가 무조건 변경되는 건 아님)
연관관계 (Association)
class A {
private B b;
}
의존관계 (Dependency)
class A {
public B method(B b) {
return new B();
}
}
상속관계 (Inheritance)
실체화관계 (Realization)