직접참조 vs 간접참조 개념정리

dO_the_Jeegu·2023년 4월 2일
0

개념정리

목록 보기
4/5

직접참조(Direct reference)

  • 다른 객체나 모듈에 직접적으로 접근하여 참조하는 방법
  • 코드가 간결하고 직관적이며 처리 속도가 빠름
  • 객체 간 결합도가 높아져 유지보수가 어려움

<직접참조 예시>

public class Car {
    private Engine engine;

    public Car() {
        this.engine = new Engine(); //직접참조
    }

    public void start() {
        engine.start(); //직접호출
    }
}

public class Engine {
    public void start() {
        System.out.println("Engine started!");
    }
}

이 코드에서 CarEngine 인스턴스를 직접 생성하고 있다. 따라서 따라서 Car 인스턴스가 생성될 때 Engine의 인스턴스도 함께 생성되며, Car의 메서드에서 Engine의 메서드를 직접 호출한다.


간접참조(Indirect reference)

  • 다른 객체나 모듈에 간접적으로 접근하여 참조하는 방법
  • 객체간 결합도를 낮추며 유지보수에 용이
  • 추가적인 로직이 필요하며 처리 속도가 상대적으로 느릴 수 있음
  • 간접 참조를 너무 많이 사용하면 코드의 가독성이 떨어짐

<간접참조 예시>

public class Car {
    private Engine engine;

    public Car(Engine engine) {
        this.engine = engine; //간접참조
    }

    public void start() {
        engine.start();
    }
}

public class Engine {
    public void start() {
        System.out.println("Engine started!");
    }
}

이 코드에서는 CarEngine을 간접 참조하고 있으며, Car의 인스턴스가 생성될 때 Engine의 인스턴스는 생성되지 않는다. 대신 Engine 인스턴스를 인자로 전달받아 Engine 인스턴스를 생성하고, Car 메서드에서 Engine 메서드를 간접 호출한다.



👀 코드 참고 (Chat GPT)
profile
오지는 갓생 살기

0개의 댓글