2025/01 53

[멋쟁이사자처럼 부트캠프 TIL회고] 51일차 : 스스로 공부하기

아이템 습득 구현 목표 1인칭 시점에 맞는 조작 구현커서 만들기아이템에 커서를 대면 아이템 정보가 나오게 만들기아이템 정보가 뜨고 있을 떄 습득 키(E)를 누르면 "아이템 습득" 로그 찍기아이템 정보를 연동해 인벤토리에 연동하기 1. 1인칭 시점에 맞는 조작 구현하고 '마우스 움직임'으로 회전을 조작하는 방식은 익숙하지 않았다. '이동'관련 코딩은 몇 번 해봤음에도 오래걸렸다.  단순히 목표 오브젝트의 방향대로 힘을 가하거나, 이동을 시키는 것이 아닌 '바라보는 방향' 기준으로 조작해야 한다. public void Move(Vector2 moveInput){ Vector3 forward = cameraTransform.forward; Vector3 right = cameraTransform.rig..

TIL 2025.01.11

디자인 패턴 : 비지터 패턴 (Visitor Pattern)

Vistor Pattern'방문자'라는 뜻, 방문자는 어떤 장소에 방문했을 때 장소를 변경시키지 않고 정보를 가져옴특정 객체 구조를 변경시키지 않고 정보를 참고하고 싶을때 사용구현  Ivisitor 인터페이스로 구체적인 요소들에 접근할 visit 함수를 매개변수를 달리해 만듬 방문을 받고자 하는 요소들을 표시해주기 위해 IElement 인터페이스를 만들고, 방문 가능한(데이터를 얻고싶은) 클래스들에 인터페이스로 추가각 클래스(요소)들은 인터페이스를 상속받아 Ivisitor 타입을 매개변수로 받는 Accept 함수 생성구체적 visitor 클래스에서 데이터를 가져와 어떤 가공을 할 지를 정함( 할인과 같은 기능) 장점구체적 클래스(요소)들의 객체 구조를 변화시키지 않음IElement를 상속받고, Accep..

개념공부 2025.01.10

디자인 패턴 : 프록시 패턴 (Proxy Pattern)

Proxy PatternProxy, '대리', '대리인'이라는 뜻으로 일을 대신 시키는 것을 의미OOP에서는 클라이언트가 객체를 직접 사용하는 것이 아닌 중간 프록시(대리인)을 거쳐 사용하는 패턴대상 클래스,객체가 민감한 정보를 가지고 있거나, 무겁거나, 추가 기능을 가미하고 싶은 상황에서원본 객체를 수정할수 없는 상황을 극복하기 위한 패턴 클라이언트는 프록시와 실제 객체의 차이를 모르고 사용한다 (같은 인터페이스를 구현)즉, 실제 객체와 프록시를 '동일하게 취급' 이 방식으로 목표 subject의 함수를 직접 실행하는 것이 아니기 때문에 도중에 '과정'을 추가할 수 있다.가상 프록시 : 지연 초기화 방식, 서비스가 시작될 때 객체를 생성하는 대신,  실제로 필요한 시점에 생성할 수 있게 함Lazy Lo..

개념공부 2025.01.10

[멋쟁이사자처럼 부트캠프 TIL회고] 50일차 :

디자인 패턴 : 컴포지트 패턴(Composite Pattern)   단일 객체(Leaf)와 복합 객체(Composite)로 이루어지며, 이 둘을 동일한 컴포넌트로 취급하고 동일한 인터페이스로 묶는다. 그리고 재귀적으로 계속 아래로 내려가며, Leaf에 있는 함수를 호출하는 패턴, 파일(Leaf)와 폴더(Compositie)를 생각하면 편하다. 파일 안에 파일이 있을 수도, 파일 안에 파일과 폴더가 있을 수도 있다.   https://febelo0524.tistory.com/73 디자인 패턴 : 컴포지트 패턴간단한 패턴이다. leaf와 Composite 모두 같은 인터페이스를 상속받고, 구현은 leaf에서, 하며 composite에서는 재귀적으로 자신의 리스트 안에 있는 leaf에서 구현을 호출하게 한다...

카테고리 없음 2025.01.10

디자인 패턴 : 파사드 패턴

Facade Pattern  : 사용하기 복잡한 클래스 라이브러리에 대해 사용하기 편한 인터페이스를 구성하기 위한 패턴특정한 기능들을 묶어두거나, 생성에 특정한 로직을 추가하는 것이 아닌 '정리'를 위한 패턴이라고 이해 하는 것이 편함.출처 : INPA Dev퍼사드는 하위시스템 클래스들을 캡슐화 하는 것이 아니라, 서브 시스템들을 사용할 간단한 인터페이스를 제공하는 것사용자가 서브 시스템 내부의 클래스를 직접 제한하는 것을 막을 수는 없다.  예시 코드 using System;public class Amplifier{ public void On() => Console.WriteLine("Amplifier: On"); public void Off() => Console.WriteLine("Amp..

개념공부 2025.01.09

디자인 패턴 : 컴포지트 패턴

간단한 패턴이다. leaf와 Composite 모두 같은 인터페이스를 상속받고, 구현은 leaf에서, 하며 composite에서는 재귀적으로 자신의 리스트 안에 있는 leaf에서 구현을 호출하게 한다. using System;using System.Collections.Generic;using UnityEngine;public interface IComponent{ void Operation();}public class Composite : IComponent{ private List components = new List(); public void Add(IComponent component) { components.Add(component); } publi..

개념공부 2025.01.09

[멋쟁이사자처럼 부트캠프 TIL회고] 49일차 : 디자인 패턴

디자인 패턴 : 전략 패턴 https://febelo0524.tistory.com/68 디자인 패턴 : 전략 패턴전략 패턴객체의 전략(행동)을 정의하는 알고리즘을 외부에서 선택하고 주입하여 유연성과 확장성을 높이는 설계 방식'전략'을 캡슐화하여 런타임에 동적으로 교체할수 있도록 설계하는 방법DIfebelo0524.tistory.com정리한 내용을 바탕으로 간단하게 생각해보자면, 같은 DoSomething() 메서드를 호출해도, SetStrategy로 설정한 strategy에 따라 다른 기능이 호출되는 것이다.이는 DoSomething메서드가 구체적인 클래스를 참조하지 않고, Strategy 인터페이스를 참조하기 때문이다.  정리하면서 느낀 것은, 아직 나는 다형성 개념에 대해 완벽히 이해하고 있지 못하다..

TIL 2025.01.09

디자인 패턴 : 중재자 패턴

중재자 패턴다대 다 (N : N)의 관계에서 객체 간의 직접 통신을 막고, 모든 통신을 중재자를 통해서 해결객체들 간의 상호작용은 직접적으로 연결되지 않음객체는 오직 중재자만 참조함예를 들자면, 카카오톡을 생각하면 된다. 다른 사람 1,2,3 에게 메세지를 보내고 싶다면 하나하나씩 보내는 것보다중재자(카카오톡 그룹방)에 올리면 사람들이 그걸 보는 방식이라고 이해하면 편하다.  옵저버 패턴과의 다른 점은 다음과 같다.   옵저버 패턴의 예시를 먼저 보자// Subject 인터페이스public interface ISubject{ void RegisterObserver(IObserver observer); void UnregisterObserver(IObserver observer); void..

개념공부 2025.01.08

디자인 패턴 : 연쇄 책임 패턴 (Chain Of Responsibility)

연쇄 책임 패턴 클라이언트의 요청에 대한 처리를 하나의 객체가 하는 것이 아닌, 여러개의 처리 객체들로 나누고 사슬로 묶어 연쇄적으로 처리하는 방식처리 객체들은 핸들러(Handler)라고 불리며 자신의 기능만큼만 요청을  처리하고(혹은 처리가 불가능하다면) 다음 체인으로 연결을 떠넘긴다. if-else 문들을 최적화하는데에 있어서 애용되는 패턴체인 연결을 동적으로 처리할 수도 있음장점클라이언트가 핸들러들의 내부 구조를 알 필요가 없음새로운 요청에 대한 처리 객체 생성이 편해짐(각각의 체인마다 역할이 있으므로)핸들러를 체인에 동적으로 추가하거나, 변경할 수 있어 유연해진다.요청의 호출자와 수신자를 분리시킬 수 있음단점디버깅 및 테스트가 어려워질 수 있다.체인 끝까지 갔는데도 처리되지 않는 경우가 있다.이 ..

개념공부 2025.01.08

디자인 패턴 : 빌더 패턴

빌더 패턴 복잡한 객체의 생성 과정을 분리하여 다양한 구성의 인스턴스를 만드는 생성 패턴생성자에 들어갈 매개 변수를 메서드로 하나하나 받아들이고, 마지막에 통합하며 객체를 생성예를 들어 햄버거 하나를 만든다고 하면 햄버거에 치즈를 빼는 사람도, 넣는 사람도 있을 것이고, 패티를 두 장 넣는 사람도 있을 것이다. 생성자로 생성한다면 ?이것을 표현하기 위해서 생성자로는 각각의 매개 변수들 (번, 치즈, 고기, 야채) 등을 받아 생성해야 한다. 이는 매개변수가 늘어나면 몇 번째가 번이었는지, 치즈였는지 혼동할 여지가 있고, 번만 먹고 싶을 때에도 0을 넣어주어야 하는 번거로움이 있다.또 타입이 다양해질수록 메서드 수가 기하급수적으로 늘어나 가독성과 유지보수 측면에서 좋지 않다. 자바 빈 패턴위의 단점을 해결하..

개념공부 2025.01.08