[구조패턴]플라이웨이트패턴-자바String,Hashmap,Cache

____·2024년 8월 13일
0

[JAVA디자인패턴]

목록 보기
5/8
post-thumbnail

리소스 관리용 팩토리 생성

  • 존재하면 기존 소스 return
  • 존재하지 않으면 새로 할당 후 리턴

메모리 사용량을 줄인다.

실제 사례

  • 자바의 String

자바의 String은 문자열을 나타내는 클래스입니다. String은 공유 가능한 객체로 구현되어 있습니다. 따라서 같은 문자열을 여러 번 생성하더라도, 실제 객체는 한 번만 생성됩니다.

String은 플라이웨이트 패턴을 사용하여 구현되었습니다. String 클래스는 intern() 메서드를 제공합니다. intern() 메서드는 문자열이 이미 존재하는지 확인하고, 존재하는 경우 해당 객체를 반환합니다.

  • 자바의 HashMap

자바의 HashMap은 키-값 쌍을 저장하는 자료구조입니다. HashMap은 키-값 쌍을 객체로 구현합니다. HashMap은 키-값 쌍이 공유 가능한 객체로 구현되어 있습니다. 따라서 같은 키-값 쌍을 여러 번 저장하더라도, 실제 객체는 한 번만 생성됩니다.

HashMap은 플라이웨이트 패턴을 사용하여 구현되었습니다. HashMap 클래스는 put() 메서드를 사용하여 키-값 쌍을 저장합니다. put() 메서드는 키가 이미 존재하는 경우 해당 객체를 반환합니다.

  • 웹 브라우저의 Font

웹 브라우저의 Font는 글꼴을 나타내는 객체입니다. Font는 공유 가능한 객체로 구현되어 있습니다. 따라서 같은 글꼴을 여러 번 사용해도, 실제 객체는 한 번만 생성됩니다.

웹 브라우저의 Font는 플라이웨이트 패턴을 사용하여 구현되었습니다. Font 클래스는 getFont() 메서드를 사용하여 글꼴을 가져옵니다. getFont() 메서드는 글꼴이 이미 존재하는지 확인하고, 존재하는 경우 해당 객체를 반환합니다.

플라이웨이트 패턴은 다음과 같은 장점이 있습니다.

  • 메모리 사용량을 줄일 수 있다.
  • 애플리케이션의 성능을 향상시킬 수 있다.
  • 코드의 재사용성을 높일 수 있다.

플라이웨이트 패턴은 다양한 프레임워크에서 적용되어, 애플리케이션의 성능과 메모리 사용량을 개선하는 데 도움이 됩니다.

다음은 플라이웨이트 패턴이 적용된 프레임워크의 서비스의 예입니다.

  • 자바의 StringPool

자바의 StringPool은 문자열을 저장하는 자료구조입니다. StringPool은 플라이웨이트 패턴을 사용하여 구현되었습니다. StringPool은 문자열이 이미 존재하는지 확인하고, 존재하는 경우 해당 문자열을 반환합니다.

  • 자바의 Cache

자바의 Cache는 데이터를 저장하는 자료구조입니다. Cache는 플라이웨이트 패턴을 사용하여 구현될 수 있습니다. Cache는 데이터가 이미 존재하는지 확인하고, 존재하는 경우 해당 데이터를 반환합니다.

  • 웹 브라우저의 FontCache

웹 브라우저의 FontCache는 글꼴을 저장하는 자료구조입니다. FontCache는 플라이웨이트 패턴을 사용하여 구현되었습니다. FontCache는 글꼴이 이미 존재하는지 확인하고, 존재하는 경우 해당 글꼴을 반환합니다.

이러한 서비스들은 플라이웨이트 패턴을 사용하여 메모리 사용량을 줄이고, 애플리케이션의 성능을 향상시킵니다.

0개의 댓글