Octoping의 블로그
article thumbnail
디자인 패턴 깊게 핥아보기 - 플라이웨이트 패턴
개발 일반/디자인 패턴 2023. 11. 25. 12:49

플라이웨이트 패턴의 개념플라이웨이트 패턴 (Flyweight Pattern)은 공유를 위해 사용되는 패턴으로, 객체를 재사용해서 메모리를 절약하기 위한 목적의 디자인 패턴이다. 이 때 객체는 재사용되어야 하므로 공유되는 객체는 불변이어야 한다. 불변 객체가 아니라면 어떤 코드가 플라이웨이트 객체를 임의로 수정했을 때 그 객체를 공유하고 있는 다른 코드에 영향을 미치기 때문이다. (이는 싱글톤과도 비슷하다) 시스템에 많은 수의 동일한 불변 객체가 있다면 이 패턴을 사용해서 객체를 플라이웨이트로 설계하고 메모리에 하나의 인스턴스만 보관하여 메모리를 절약할 수 있다. 꼭 동일한 객체가 아니더라도 유사도가 높은 객체에 대해 동일한 필드를 추출해서 플라이웨이트로 설계할 수도 있다. 이 때 변하지 않는 불변 속성은..

article thumbnail
디자인 패턴 깊게 핥아보기 - 어댑터 패턴
개발 일반/디자인 패턴 2023. 11. 25. 03:08

어댑터 패턴의 개념 한국에서 사용하던 플러그를 외국에서도 사용하려면 플러그 모양을 바꿔주는 어댑터가 필요하다. 이와 비슷하게, 디자인 패턴에서의 어댑터 패턴도 어떤 인터페이스를 클라이언트에서 요구하는 형태로 적응시키는 역할을 한다. 어떤 새로운 라이브러리를 사용해야 하는데 그 인터페이스가 기존의 인터페이스와 다를 경우, 새 인터페이스를 기존의 인터페이스에 적응시켜주는 클래스를 만들면 된다. 클래스 어댑터와 객체 어댑터 어댑터 패턴에는 클래스 어댑터, 객체 어댑터라는 두 가지 방식이 있다. 클래스 어댑터는 상속 관계를 사용한 방식이고, 객체 어댑터는 합성 관계를 사용한 방식이다. 헤드퍼스트 디자인 패턴에도 나오는 유명한 예시인, Duck과 Turkey의 예제로 설명해보겠다. 합성 기반의 객체 어댑터 int..