단일
Singleton Pattern은 클래스의 인스턴스화를 단일 인스턴스로 제한하고 해당 인스턴스에 대한 글로벌 액세스 지점을 제공하는 설계 패턴입니다. 이 패턴은 일반적으로 클래스의 인스턴스를 하나만 만들고 코드의 다른 부분에서 쉽게 액세스할 수 있도록 해야 하는 상황에서 사용됩니다.
싱글턴 패턴은 개인 생성자와 클래스가 호출될 때마다 동일한 인스턴스를 반환하는 정적 메서드가 있는 클래스를 정의하여 구현됩니다. 클래스의 인스턴스는 일반적으로 클래스 내의 개인 정적 변수로 저장됩니다.
(클래스의 인스턴스를 하나만 만듬 호출하면 동일한 인스턴스 반환)
의존성 주입(Dependency Injection, DI)은 객체 간의 의존성을 줄이기 위한 디자인 패턴 중 하나입니다. 의존성이란, 한 객체가 다른 객체를 사용할 때 발생하는 상호 의존적인 관계를 의미합니다. 객체 간의 의존성이 높아질수록 코드의 유연성과 재사용성이 떨어지게 됩니다. 의존성 주입은 이러한 문제를 해결하기 위해, 객체 간의 의존성을 느슨하게 만들어줍니다.
의존관계 역전 원칙(Dependency Inversion Principle, DIP)은 객체 간의 의존성을 느슨하게 만들기 위한 원칙 중 하나입니다. 이 원칙은 고수준 모듈은 저수준 모듈에 의존해서는 안 된다는 것을 말합니다. 즉, 구체적인 구현에 의존하기보다는 추상화된 인터페이스나 추상 클래스에 의존해야 합니다.
의존성 주입과 의존관계 역전 원칙은 서로 연관되어 있습니다. 의존성 주입은 의존관계 역전 원칙을 구현하기 위한 방법 중 하나입니다.
다음은 의존성 주입과 의존관계 역전 원칙을 적용한 코드 예시입니다.