소프트웨어 아키텍처 4

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. SOLID 원칙 – 실무 예제로 쉽게 설명하기

📚 Chapter 2.1: SOLID 원칙 – 실무 예제로 쉽게 설명하기1️⃣ SOLID란 무엇인가? (큰 그림)✅ SOLID란?"좋은 객체지향 설계를 위한 5가지 핵심 원칙"프로그램이 변화에 강하고, 유지보수가 쉬운 구조를 만들기 위한 철칙!SOLID 이름 뜻:약어이름핵심 요약SSRP (Single Responsibility Principle)하나의 책임만 가져라OOCP (Open-Closed Principle)확장에는 열려있고, 변경에는 닫혀라LLSP (Liskov Substitution Principle)자식 클래스는 부모 클래스를 대체할 수 있어야 한다IISP (Interface Segregation Principle)덩치 큰 인터페이스는 쪼개야 한다DDIP (Dependency Inversio..

C# 2025.04.27

C# 기초부터 고급까지 Chapter 2.1.4. ISP (Interface Segregation Principle) – 인터페이스 분리 원칙

📚 Chapter 2.1.4. ISP (Interface Segregation Principle) – 인터페이스 분리 원칙✅ ISP란?"하나의 클라이언트가 자신이 사용하지 않는 메서드에 의존하지 않게 해야 한다."쉽게 말하면,"인터페이스는 작게 작게 쪼개라!""필요한 기능만 가진 인터페이스만 제공해라!"📚 왜 ISP가 중요한가?문제 상황결과거대한 인터페이스필요 없는 메서드도 강제로 구현해야 함코드 복잡성 증가무쓸모 코드들이 시스템을 오염시킴유지보수 난이도 상승하나 바꾸면 연쇄 수정 지옥✅ ISP를 지키면 →필요한 기능만 깔끔하게 다루고,코드 수정 범위 최소화된다!🛠️ 기본 나쁜 예제: ISP 위반덩치 큰 인터페이스public interface IWorker{ void Work(); voi..

C# 2025.04.27

C# 기초부터 고급까지 Chapter 2.1.1. SRP (Single Responsibility Principle) – 단일 책임 원칙

📚 Chapter 2.1.1: SRP (Single Responsibility Principle) – 단일 책임 원칙✅ SRP란?"하나의 클래스(또는 모듈)는 하나의 책임만 가져야 한다."👉 변경 이유(Reason to change)가 단 하나여야 한다는 거다!🔥 쉽게 풀자"A 클래스는 ~도 하고 ~도 하고 ~도 한다" → ❌"A 클래스는 단 하나의 일만!" → ⭕ (깔끔하고 유지보수 쉽다)📚 왜 SRP가 중요한가?문제 상황결과여러 책임을 가지면한 책임 변경 시, 다른 책임도 영향을 받음클래스 크기 폭발읽기, 수정, 테스트가 어려워짐코드 중복, 버그 증가한 번에 여러 기능이 꼬임✅ 단일 책임 원칙을 지키면 →수정 시 영향 최소화테스트 쉽고 빠름코드 읽기가 쉬움🛠️ 기본 예제: 나쁜 설계publi..

C# 2025.04.27