STUDY/디자인 패턴(5)
-
[Design Pattern] 커맨드 패턴(Command pattern)
이 글은 'level up your code with game programming patterns' 서적을 기반으로 각종 블로그에서 추가적인 정보를 얻어 작성하였습니다.[커맨드 패턴]만약 실행 취소/다시 실행 기능이 사용되거나 입력 내역이 목록으로 유지되는 게임을 플레이해 본 적이 있다면 아마 커맨드패턴을 본적이 있을 것이다. 사용자가 실제로 여러 턴을 실행하기 전에 계획할 수 있는 전략 게임을 생각해보면 그것이 바로 커멘드 패턴이다.커맨드는 어떠한 요청(캐릭터를 앞으로 이동시킨다)를 요청에 대한 모든 정보를 포함한 독립실행형 객체로 변환하는 행동 디자인 패턴이다. 즉 요청을 객체의 형태로 캡슐화하여 사용자가 보낸 요청을 나중에 이용할 수 있도록 메서드 이름, 매개변수 등 요청에 필요한 정보를 저장 또..
2024.12.09 -
[Design Pattern] MVC 패턴과 MVP 패턴
이 글은 'level up your code with game programming patterns' 서적을 기반으로 각종 블로그에서 추가적인 정보를 얻어 작성하였습니다.[MVC 패턴]MVC(모델 뷰 컨트롤러) (이하 MVC) 패턴은 사용자 인터페이스를 개발할 때 흔히 사용되는 일련의 디자인 패턴이다. MVC의 기본 아이디어는 소프트웨어의 논리적 부분과 데이터 및 프레젠테이션에서 분리하는 것이다. 그러면 불필요한 종속 관계를 줄이는 데 도움이 되며, 잠재적으로 스파게티 코드도 줄일 수 있다.이름에서 알 수 있듯 MVC 패턴은 다음 3가지의 레이어로 분할된다.Model : 데이터를 저장한다. 모델은 전적으로 값을 저장하는 데이터 컨테이너이며 게임플레이 로직이나 계산을 수행하지 않는다.View : 인터페이스..
2024.12.09 -
[Design Pattern] 팩토리 패턴(Factory Pattern)
이 글은 'level up your code with game programming patterns' 서적을 기반으로 각종 블로그에서 추가적인 정보를 얻어 작성하였습니다.객체 지향 디자인 패턴의 기본 원칙은 확장에 있어서는 열려 있어야 하며, 수정에 있어서는 닫혀 있어야 한다는 것이다.(OCP, Open Closed Principle)여기서 수정에 있어서 닫혀 있어야 한다는 말에 주목 해보자. 코드를 수정하지 않아도 모듈의 기능을 확장하거나 변경 할 수 있어야 한다. 때문에 수정이 일어날 가능성이 큰 부분과 그렇지 않은 부분을 분리하는 것이 좋다. 객체는 속성과 함수가 변경 또는 추가될 수 있다. 때문에 객체의 생성을 담당하는 코드는 변경의 가능성이 높다. 객체의 생성을 담당하는 클래스를 한 곳에서 관리..
2024.12.09 -
SOLID 원칙
*SOLIDSRP(단일책임의 원칙 : Single Responsibility Principle) : 작성된 클래스는 하나의 기능만 가지며 클래스가 제공하는 모든 서비스는 그 하나의 책임을 수행하는 데 집중되어 있어야 한다는 원칙이다.-> serialNumber는 변화요소라 할수 없고 고유정보에 해당-> 나머지 요소는 모두 기타의 특성과 관련된 정보이므로 변경이 발생할 수 있는 부분으로, 이 부분은 변화요소라 할 수 있다. 따라서 특정 정보에 변화가 발생하면 항상 해당 클래스를 수정해야하는 부담이 발생할 수 있으므로 이부분이 SRP적용의 대상이 된다.-> 이렇게 분리하면 특성 정보에 변경이 일어나면 GuitarSpec 클래스만 변경하면 된다.OCP(개방폐쇄의 원칙 : Open Close Principle..
2024.12.08 -
Static, 싱글톤
[static]static 키워드는 변수나 함수, 클래스에 정적 속성을 부여하는 것으로 클래스로부터 객체를 생성하지 않고 변수나 함수를 호출할 수 있도록 해주는 것이다. 클래스의 일반 멤버 변수는 클래스의 객체가 생성될 때, 각 객체마다 따로 생기지만, 정적 변수는 해당 클래스가 처음으로 사용되는 때에 한번만 초기화되어 계속 동일한 메모리를 사용하게 된다.도식으로 보면 위의 그림과 같다. 정적 변수를 포함한 클래스 A의 객체를 두 개를 생성하여 각 이름을 object1, object2라고 했을 때, 각 인스턴스에는 정적 변수가 포함되지 않으며, 일반 멤버 변수만 포함된다. 클래스 A의 정적 변수는 클래스 A가 처음 사용되는 시점에 별도의 메모리 공간에 할당된다. -> 생성된 객쳉 정적 변수가 포함되지 않..
2022.07.01