Singleton VS DI
·
프로그래밍 언어/C#
✅ Singleton VS DI Singleton GoF 책에서 나온 가장 기본적인 디자인 패턴 싱글톤은 응용 프로그램 전체 수명 동안 어떤 클래스의 인스턴스를 하나만 가지는 것을 의미하는 디자인 패턴이다 싱글톤을 사용하는 것은 본질적으로 나쁜 것은 아님. 일반적인 구현 방법 public class BankGateway { public readonly static BankGateway Instance = new BankGateway(); private BankGateway() { } public void TransferMoney() { /* Transferring money */ } } private를 생성자로 가지며, Instance 참조를 통해 인스턴스를 유일하게 가져올 수 있다. static이기 때..
의존성 주입(Dependency Injection)
·
개발툴/Unity
✅ 의존성 주입(Dependency Injection) 객체간의 의존성을 외부에서 주입하는 방식으로 소프트웨어 디자인 패턴 중 하나이다. 의존성 한 객체가 다른 객체를 사용할 때 의존성이 있다고 한다. public class Store { private Pencil pencil; } 출처: [MangKyu's Diary:티스토리] 의존성 주입 두 객체 간의 관계(의존성)을 맺어주는 것을 의존성 주입이라고 한다. 생성자 주입, 필드 주입, 수정자 주입등 다양한 주입 방법이 있다. 의존성 주입의 필요성 강한 결합의 문제 유연하지 못해서 제약이 많고 확장성이 떨어진다. 객체끼리가 아닌 클래스끼리 관계 맺음의 문제 객체지향적 설계라고 볼 수 없다. 의존성 주입 방법 Interface를 만들어 다형성을 통해 해결..
Reflex (Github Readme 번역)
·
개발툴/Unity
✅ Reflex Unity용 DI(종속성 주입) 프레임 워크. Reflex를 사용하면 클래스를 종속성에서 독립적으로 만들어 관심사를 분리할 수 있고, 객체의 사용과 생성을 분리할 수 있다. 이는 SOLID의 종속성 반전 및 단일 책임 원칙을 따르는데 도움이 된다. 특징 빠른 속도 VContainer 대비 약 3배 빠르며, Zenject 대비 약 7배 빠름 IL2CPP 친화적 AOT(사전 컴파일)를 지원 해서 런타임 Emit이 없고, 그래서 IL2CPP 빌드에서도 잘 작동한다. GC 친화적 VContainer 대비 약 2배 적게, Zenject 대비 약 9배 적게 할당한다. 다양한 플랫폼으로 호환 가능 iOS, Android, Windows/Mac/Linux, PS4/PS5, Xbox One/S/X and..