다만 여러 클래스가 같은 구현을(소스코드 중복)한다면 문제가 됩니다. 한 로직이 바뀌었을때 다른 부분 로직까지 수정해야 되지요. 이런 의미에서 orthogonality를 유지하라는 내용이 아닌 가 싶습니다. 약간 다른 말이긴 하지만 재사용성을 최대화 하라는 말과 비슷합니다.
클래스 안에서 다른 클래스를 포함하고 있다면, 두 클래스 간의 coupling 이 생깁니다.
높은 coupling 은 일반적으로 반직교적인 설계가 되구요.
이런식으로 클래스간의 dependency 가 생기면 한 클래스가 수정될 경우, 그와 의존된 다른 클래스의 수정이 불가피하죠.
따라서 coupling 을 줄이기 위해서 DI(Dependency Injection) 이나 IoC(Inversion of Control) 같은 패턴들이 등장을 했고,
자바 같은 정적 타입 언어에서는 이를 지원하기 위해서 스프링이나 구글 주스 같은 프레임워크들이 쓰이기도 하죠.
루비와 같은 동적 타입 언어에서는 덕 타이핑을 통해서 이런 의존성 문제를 해결할 수 있죠.
클래스를 포함하고 있는 건 괜찮습니다.
다만 여러 클래스가 같은 구현을(소스코드 중복)한다면 문제가 됩니다. 한 로직이 바뀌었을때 다른 부분 로직까지 수정해야 되지요. 이런 의미에서 orthogonality를 유지하라는 내용이 아닌 가 싶습니다. 약간 다른 말이긴 하지만 재사용성을 최대화 하라는 말과 비슷합니다.
클래스 안에서 다른 클래스를 포함하고 있다면, 두
클래스 안에서 다른 클래스를 포함하고 있다면, 두 클래스 간의 coupling 이 생깁니다.
높은 coupling 은 일반적으로 반직교적인 설계가 되구요.
이런식으로 클래스간의 dependency 가 생기면 한 클래스가 수정될 경우, 그와 의존된 다른 클래스의 수정이 불가피하죠.
따라서 coupling 을 줄이기 위해서 DI(Dependency Injection) 이나 IoC(Inversion of Control) 같은 패턴들이 등장을 했고,
자바 같은 정적 타입 언어에서는 이를 지원하기 위해서 스프링이나 구글 주스 같은 프레임워크들이 쓰이기도 하죠.
루비와 같은 동적 타입 언어에서는 덕 타이핑을 통해서 이런 의존성 문제를 해결할 수 있죠.
댓글 달기