Builder
·
⭐C Sharp/13. 디자인 패턴
Builder빌더 패턴은 복잡한 객체의 생성 과정을 단계별로 캡슐화한다같은 생성 과정으로 서로 다른 표현의 객체를 만들 수 있게 해주는 생성 ( Creational ) 패턴이다.조립 과정을 분리해서 유연하게 객체를 생성하는 것이 핵심이다. ▼예시 코드using UnityEngine;public class Ship : MonoBehaviour { public string ShipName; public string Hull; public string Engine; public string Weapon; public void ShowInfo() { Debug.Log($"배 이름: {ShipName}, 선체: {Hull}, 엔진: {Engine}, 무기: {We..
Factory Method
·
⭐C Sharp/13. 디자인 패턴
팩토리 ( Factory Method )팩토리 패턴은 객체 생성 로직을 별도의 메서드 / 클래스로 분리한다.클라이언트 코드가 구체적인 클래스 이름을 알 필요 없이 객체를 생성할 수 있도록 하는 생성 ( Creational ) 패턴이다. 객체 생성을 캡슐화 한다 ▼예시 코드using UnityEngine;public abstract class Ship : MonoBehaviour { public abstract void Sail();}public class BattleCruiser : Ship { public override void Sail() { Debug.Log("Battlecruiser operational."); }}public class Medivac : ..
Inside-Out Fisher–Yates
·
📊Algorithm/셔플
Inside-Out Fisher–YatesInside-Out Fisher–Yates 은 일반적인 피셔 예이츠 ( Fisher Yates ) 셔플의 변형 버전이다.핵심 아이디어는 새로운 배열을 만들면서 동시에 섞인 상태를 채워 넣는 것이다. 동작 과정 길이가 같은 새 배열을 준비한다.i = 0 부터 n-1 까지 순회하면서랜덤 인덱스 j 를 0 ~ i 범위에서 뽑는다.새 배열의 i 에 원본 배열의 i 를 넣는다.만약 j != i 라면, 새 배열의 i 대신에 j 위치의 원소와 교체한다.이렇게 하면 새 배열이 완전히 무작위로 섞인다. 의사코드 ( PseudoCode ) 표현for i = 0 → (배열의 마지막 인덱스)까지 반복한다 0부터 i까지 범위에서 무작위 인덱스 j를 선택한다 만약 j ≠..
명명된 매개변수 ( Named Parameters )
·
⭐C Sharp/00. 문법
명명된 매개변수 ( named parameters )명명된 매개변수는 함수를 호출할 때 매개변수 이름을 지정해서 값을 전달하는 방식이다.일반적으로 함수에 인자들 전달할 때에는 순서대로 넣지만,명명된 매개변수를 쓰면 순서에 상관없이 이름을 지정해 전달할 수 있다. ▼예시 코드void CreateCharacter(string name, int level = 1, string job = "Warrior"){ Console.WriteLine($"Name: {name}, Level: {level}, Job: {job}");}// 일반 호출 (순서대로)CreateCharacter("HoChan", 10, "Mage");// 명명된 매개변수 사용CreateCharacter(job: "Archer", name:..
의존성 주입 ( Dependency Injection )
·
⭐C Sharp/13. 디자인 패턴
의존성 주입 ( Dependency Injection , DI )의존성 주입은 객체가 직접 다른 객체를 생성하거나 의존하지 않고, 외부에서 필요한 객체 ( 의존성 )를 넣어주는 설계 방식이다. 기본 개념보통 클래스 A 가 클래스 B를 사용해야 한다면, A 안에서 new B() 를 해서 만든다.→ 이렇게 되면 A 와 B 가 강하게 결합 ( 의존 )하게 된다. 의존성 주입은 B 를 외부에서 만들어서 A 에게 전달하는 방식이다→ 이렇게 하면 A 는 B 의 구체적인 생성 방식에 신경 쓰지 않고, 단지 B가 필요하다는 사실만 알면 된다. 필요한 이유1. 결합도 낮춤 ( Loosely Coupled )→ 클래스끼리 덜 얽혀 있어서 코드 수정이나 확장이 쉽다 2. 테스트 용이→ 예시 : 진짜 DB 대신 MockD..
Gang of Four
·
⭐C Sharp/13. 디자인 패턴
Gang of FourGoF ( Gang of Four )는 디자인 패턴 책을 집필한 4명의 저자를 가리키는 말이다.1994 년에 출판한【 Design Patterns : Elements of Reusable Object - Oriented Software 】책은 소프트웨어 설계에 있어 공통된 문제들에 대한 표준적인 해법과 작명법을 제안한 책이다. 이 분야의 사인방 ( Gof )이라 불리는 에리히 감마 ( Erich Gamma ) , 리처드 헬름 ( Richard Helm ) , 랄프 존슨 ( Ralph Johnson ) , 존 블리시데스 ( John Vlissides ) 는 이 책에 23가지 대표적인 디자인 패턴을 정리했다. 이 책이 디자인 패턴의 시작점인자 표준으로 자리 잡았다.우리가 말하는 생성 (..
게임에 자주 쓰이는 패턴
·
⭐C Sharp/13. 디자인 패턴
게임에 자주 쓰이는 패턴소프트웨어 개발에서 자주 발생하는 문제 상황을 객체지향 원리에 따라 재사용 가능하게 정리해 둔 설계 아이디어 템플릿이다.수많은 디자인 패턴들이 존재하는데 일부는 확장성에 초점을 맞추기도 하고, 일부는 최적화 및 재활용성에 초점을 맞추기도 한다.게임의 경우, 퍼포먼스가 중요하기 때문에 최적화와 직결되는 디자인 패턴들의 선호도가 높다. 싱글톤 패턴 ( Singleton ) - 생성 ( Creational )애플리케이션 전역에서 딱 하나의 인스턴스만 존재하도록 보장하고 , 어디서든 쉽게 접근하게 하는 패턴 사용하면 좋은 상황글로벌 상태 / 서비스 : 설정 , 오디오 매니저 , 저장소 , 씬 전역 이벤트 , 게임 매니저씬을 넘어 수명 유지가 필요한 매니저 구조private 생성자 ..
디자인 패턴 ( Design Pattern )
·
⭐C Sharp/13. 디자인 패턴
디자인 패턴 ( Design Pattern )프로그래밍 디자인 패턴은 소프트웨어 개발에서 자주 발생하는 문제를 해결하기 위한 재사용 가능한 설계 솔루션이다.쉽게 말해, 세상 수많은 프로그래머 선배분들이 각자의 프로그래밍을 해오다가 공통되게 나타난 비슷한 설계 구조들이 있는데, 그 중 이런 설계 구조에 이름을 붙여서 설계 원칙으로 만든 것을 디자인 패턴이라고 한다. 디자인 패턴은 게임 뿐만이 아니라, 다양한 모든 프로그래밍 분야에서 활용 가능한 가이드라인이다.디자인 패턴은 구체적인 코드를 제공하지 않으며, 일반적인 구조와 상호작용을 설명하는 템플릿으로 이해할 수 있다. 핵심 개념소프트웨어 개발에서 자주 반복되는 문제 상황에 대한 재사용 가능한 해결책을 정리해 둔 일종의 설계 템플릿이다.문제 해결 경험의 ..
SOLID 원칙
·
⭐C Sharp/13. 디자인 패턴
SOLID 원칙SOLID 란,객체지향 프로그래밍 ( OOP ) 에서 코드의 유지보수성 , 확장성 , 유연성을 높이기 위해 고안된 5대 설계 원칙을 말한다.로버트 C. 마틴 ( Robert C. Martin , "Uncle Bob" )이 제안했고, 이후 좋은 소프트웨어 설계의 기본 원칙으로 널리 사용한다. S - 단일 책임 원칙 ( Single Responsibility Principle )클래스는 하나의 역할만 가져야 한다.즉 , 하나의 클래스는 하나의 기능을 담당하여 하나의 책임을 수행하는데 집중되도록 클래스를 개별적으로 설계하는 원칙이다. ▼안좋은 예시class User{ public void SaveToDB() { // DB 저장 로직 } public void..