오늘의하루

(객체 지향 설계) 순수 자바로 DIP 원칙 지키기 본문

JAVA

(객체 지향 설계) 순수 자바로 DIP 원칙 지키기

오늘의하루_master 2023. 8. 19. 16:18

객체 지향 설계에서 DIP는 의존 관계 역전 원칙을 의미한다.

  • 프로그래머는 추상화에 의존해야하며 구체화에 의존하면 안되는다는 말이다.
public class Test{
    TestInterface ti = new TestObject();
}

위와 같이 다형성을 이용하여 작성하면 DIP를 위반하는 행위가 된다.

  • 현재 Test 클래스는 인터페이스와 구현체 두가지 모두에 의존하고 있는 상황이다.

이를 해결 하기 위해서는 Test클래스는 추상화만 의존하게 만들어줘야 한다.

public class Test{
	// 현재 Test 클래스는 추상화에만 의존하고 있다.
	TestInterface ti;
    
    Test(TestInterface ti){
    	this.ti = ti;
    }
}


public class AppConfig{
	// 설정(기획)을 하는 클래스를 하나 만들어 준다.
    private TestInterface ti(){
    	return new TestObject();
    }
    private TestInterface ti2(){
    	retrun new TestObject2();
    }
	
    // 다른 구현체를 넣어도 Test클래스의 변경이 필요없다.
    // 이로써 OCP문제도 해결할 수 있게 된다.
    public Test test(){
    	return new Test(ti());
        // return new Test(ti2());
    }
}

public class Main{
	public static void main(String[] args){
    	AppConfig appConfig = new AppConfig();
        
        Test t = appConfig.test();
    }
}
Comments