DI 4

C# 기초부터 고급까지 Chapter 2.10. 프로젝트 구조 패턴 – Layered vs Clean Architecture 소개

📘 Chapter 2.10: 프로젝트 구조 패턴 – Layered vs Clean Architecture 소개✅ 이 챕터에서 배울 것 왜 프로젝트 구조가 중요한가? Layered Architecture란? Clean Architecture란? 두 구조의 코드 예제 비교 (C# 콘솔앱 기준, 레이어 주석 포함) 언제 어떤 구조를 써야 하는가?1️⃣ 왜 프로젝트 구조가 중요한가?✅ 설계가 잘 안 되어 있으면… 클래스가 이리저리 흩어져 유지보수 지옥 기능이 섞이고 결합이 심해 테스트가 어려움 신입이 보면 "뭐가 뭔지 모르겠는데요…"✅ 설계가 잘 돼 있으면… 역할이 딱딱 나뉘고 각 계층 책임이 명확하고 테스트도, 교체도, 확장도 쉬워진다!2️⃣ Layered Architecture✅ 계층별..

C# 2025.05.04

C# 기초부터 고급까지 Chapter 2.9. 인터페이스 활용 – 다형성 실전 예제

📘 Chapter 2.9: 인터페이스 활용 – 다형성 실전 예제✅ 이 챕터에서 배울 것인터페이스란 무엇인가?다형성이 왜 필요한가?구체 클래스 vs 인터페이스 비교실무 시나리오 예제 (MessageSender, Discount 등)전략 패턴과 인터페이스DI와 인터페이스 궁합1️⃣ 인터페이스란?인터페이스란?"기능만 약속하는 설계도" – 실제 구현은 안 담고, 메서드 이름, 파라미터만 정의public interface IAnimal{ void MakeSound();}객체의 기능 규칙만 강제클래스가 여러 인터페이스도 구현 가능상속과 다르게 다중 구현 가능2️⃣ 왜 인터페이스가 필요한가?문제 상황public class EmailSender{ public void Send(string to, strin..

C# 2025.05.03

C# 기초부터 고급까지 Chapter 2.2. 의존성 주입(DI) – .NET 기본 DI 완전 정복

📚 Chapter 2.2: 의존성 주입(DI) – .NET 기본 DI 완전 정복1️⃣ "의존성(Dependency)"이란 무엇인가?✅ Dependency(의존성) = "내가 동작하려면 필요한 다른 것"예를 들면:자동차(고수준)가 엔진(저수준)에 의존한다NotificationService(고수준)가 IMessageSender(저수준)에 의존한다"내가 뭘 해야 하는데, 다른 놈한테 기대야 한다" 이거다!2️⃣ "문제는" 직접 new로 만들어 버린다는 거야🔥 나쁜 구조 예시public class NotificationService{ private EmailSender _emailSender = new EmailSender(); // 직접 new로 만듬 public void SendNotific..

C# 2025.04.28

C# 기초부터 고급까지 Chapter 2.1.5. DIP (Dependency Inversion Principle) – 의존성 역전 원칙

📚 Chapter 2.1.5. DIP (Dependency Inversion Principle) – 의존성 역전 원칙✅ DIP란?"고수준 모듈은 저수준 모듈에 의존하면 안 된다.둘 다 추상(인터페이스, 추상 클래스)에 의존해야 한다."쉽게 말하면,구체적인 구현체에 직접 매달리지 말고인터페이스(추상)에 의존하라는 거다!📚 왜 DIP가 중요한가?문제 상황결과코드가 구체 구현에 묶여 있음기능 교체/확장 시 코드 수정 폭발테스트 힘듦Mock 객체로 대체 불가능확장성 제로새로운 기능 추가 때마다 대공사✅ DIP를 지키면 →기능 변경 자유로워지고테스트 더 쉬워지고코드 재사용성 쭉 올라간다!🛠️ 기본 나쁜 예제: DIP 위반public class EmailSender{ public void Send(str..

C# 2025.04.27