목록디자인패턴 (3)
Coding Memo
먼저 Factory 패턴에 대해... Factory Pattern은 객체 생성 로직을 캡슐화 하여, 객체 생성 방법과 사용을 분리시키고 생성방법을 특정 로직으로 강제할 수 있는 생성 디자인 패턴이다. 라이브러리에서 `~~Factory.~~~()`을 사용해보았거나 보았던 기억이 있을 것이다.Factory를 통해서 어떤 객체를 생성하는 개념은 라이브러리에서 자주 찾아볼 수 있다. (Builder와는 조금 다른 개념이라는 것에 유의하자.) 이 Factory이 패턴이 필요한 시나리오와 특징에 대해서 알아보자.Scenario(해당 단락은 책을 참고하여 작성했다.) Shape라는 구조체에 원과 정사각형의 정보를 저장하고 싶다고 가정하자. 그렇다면 다음과 같이 코드를 작성할 수 있을 것이다. (물론 딱 봐서는 cir..
브릿지 패턴은 구현과 추상화를 분리하여 독립적으로 변경 할 수 있도록 설계하는 디자인 패턴이다. 단순하게 말해서 어떤 컴포넌트가 다른 컴포넌트의 구체적인(concrete) 구현을 알지 못해도 연동할 수 있도록 설계한다. 브릿지 패턴을 사용하면 추상화를 통해, 클라이언트 코드가 특정 API에 의존하지 않도록 설계할 수 있다. 예를 들자면, 어떤 원을 그리는 Renderer 인터페이스가 있다고 하자. 이 Renderer에 렌더링 클래스를 제공하여 지정된 방식으로 렌더링을 하도록 한다. DirectX, OpenGL, Vulkan과 같은 다양한 렌더링 API를 독립적으로 관리하고 실행시킬 수 있다. 예로 들어던 Renderer를 직접 간단하게 구현하고 확인해보자.1. Renderer Renderer는 인터페이스..
싱글턴 디자인 패턴은 어플리케이션 전체에서 단 하나만 존재해야하는 인스턴스를 위한 패턴이다. 특정 인터페이스를 제공한다거나 동일한 데이터를 사용할 때 한번만 로드할 때 사용한다. 보통은 전역적으로 접근 가능한 인스턴스를 사용한다. 또, 어플리케이션 시작 시점에 인스턴스를 로드할지, 이후에 사용할 때 로드 할지 (Lazy Intialization) 잘 고려하면 될 것이다. 싱글턴 패턴 구현은 언어와 개발 환경에 따라 크게 달라지는 것 같다.인스턴스를 1개로 제한하는 방법에는 인스턴스 카운트를 관리하는 코드를 추가하거나, static 전역 변수를 두어 이 인스턴스를 반환하여 사용하는 메서드를 만들면 될 것이다.보통 후자의 방법이 많이 사용되는 것 같다. 먼저 구현하는 코드를 살펴보자. struct Singl..