1월, 2024의 게시물 표시

[OOP] 의존성 주입(Dependency Injection)을 통한 설계 원칙 준수: Java에서의 DIP 원칙 적용 사례

이미지
객체지향적 코드 작성과 DIP 원칙의 중요성 객체지향 프로그래밍을 하다 보면, 때때로 구현체에 의존하게 되는 상황이 발생합니다. 이는 DIP(의존 관계 역전 원칙) 원칙을 어기는 사례로 볼 수 있습니다. DIP는 객체지향 설계의 SOLID 원칙 중 마지막 원칙으로, "추상화에 의존해야 하며, 구체화에 의존하면 안 된다"는 원칙을 강조합니다. DIP 원칙 위반 사례 아래 예시는 간단한 상품 구매 및 회원 관리 시나리오에서 DIP 원칙을 어기는 경우를 보여줍니다. 시나리오에는 OrderService 인터페이스와 그 구현체인 OrderServiceImpl, 그리고 MemberRepository 인터페이스와 그 구현체인 MemoryMemberRepository, DbMemberRepository가 있습니다. 또한, DiscountPolicy 인터페이스와 그 구현체인 FixDiscount, RateDiscount가 존재합니다. 초기 코드는 다음과 같습니다: public class MemberApp { public static void main ( String [] args ) { // AppConfig appConfig = new AppConfig(); // MemberService memberService = appConfig.memberService(); MemberService memberService = new MemberServiceImpl ( new MemoryMemberRepository () ) ; Member memberA = new Member ( 1L , "memberA" , Grade . VIP ) ; memberService. join ( memberA ) ; Member findMember = memberService. findMember ( 1L ) ; System . out . println ( &quo