반응형

플라이급 패턴(Flyweight Pattern) 4

[C#] 플라이급 패턴(Flyweight Pattern) - 구현

11. 플라이급 패턴(Flyweight Pattern) [그림] 플라이급 패턴(Flyweight Pattern) 클래스 다이어그램 11. 4 구현 플라이급 패턴의 예제 프로그램은 Meta, MetaPool, PictureFile, 데모 코드 순으로 구현합시다. 11.4.1 Meta Meta 형식에서는 카메라의 Body 종류에 대한 열거형 멤버와 렌즈 종류에 해당하는 열거형 멤버, 조명에 대한 열거형 멤버를 갖고 있게 합시다. 그리고 같은 멤버의 값을 가졌는지 비교하는 메서드와 이들 정보를 보여주는 메서드를 제공할 것입니다. ▶ Meta.cs using System.Collections.Generic; namespace Flyweight { class MetaPool // Meta 개체들을 관리하는 클래스..

[C#] 플라이급(Flyweight Pattern) - 설계(Design)

11. 플라이급 패턴(Flyweight Pattern) 11. 3 디자인 플라이급 패턴을 설명하기 위한 예제 프로그램은 사진 파일을 관리하는 프로그램으로 할게요. 사진 파일에는 촬영할 때의 Body, 렌즈, 조명에 대한 정보를 갖고 있게 할 것입니다. 이처럼 사진의 촬영 정보들은 Meta 형식으로 정의하고 MetaPool에서 관리합니다. 새로운 조건에서 찍은 사진은 MetaPool 개체에게 촬영 조건에 해당하는 Meta개체를 요청하여 참조합니다. MetaPool은 관리하는 Meta 개체 중에 같은 조건인 개체가 있는지를 확인합니다. 만약, 있다면 해당 개체를 반환하고 없을 때만 Meta 개체를 생성하여 반환합니다. 물론, 생성한 Meat 개체는 내부 컬렉션에 보관합니다. 즉, 각 사진마다 별도의 Meta..

[C#] 플라이급 패턴(Flyweight Pattern) - 개요, 시나리오

11. 플라이급 패턴(Flyweight Pattern) 11.1 개요 프로그램에서 개체가 많아지면 메모리가 많이 차지하게 됩니다. 이럴 때 메모리 효율을 높일 필요성이 있다면 무엇을 해야 할까요? 플라이급 패턴은 이러한 문제를 해결하기 위한 하나의 방법입니다. 플라이급 패턴은 개체의 멤버 필드 중에 각 개체가 반드시 갖고 있어야 할 멤버와 여러 개체가 공유해서 사용할 수 있는 멤버로 분리하는 작업에서부터 출발합니다. 공유해서 사용할 수 있는 멤버가 가질 수 있는 상태의 종류가 개체의 수보다 상대적으로 적다면 플라이급 패턴을 사용하여 메모리 효율을 높일 수 있습니다. 플라이급 패턴에서는 공유해서 사용할 수 있는 상태들을 공유 풀에 형성합니다. 그리고 각 개체는 특정 상태를 참조합니다. 만약, 개체의 수가 ..

[소프트웨어 설계 패턴 C#] 11. 플라이급 패턴(Flyweight Pattern)

11. 플라이급 패턴(Flyweight Pattern) 프로그램에서 개체가 많아지면 메모리가 많이 차지하게 됩니다. 이럴 때 메모리 효율을 높일 필요성이 있다면 무엇을 해야 할까요? 플라이급 패턴은 이러한 문제를 해결하기 위한 하나의 방법입니다. 플라이급 패턴은 개체의 멤버 필드 중에 각 개체가 반드시 갖고 있어야 할 멤버와 여러 개체가 공유해서 사용할 수 있는 멤버로 분리하는 작업에서부터 출발합니다. 공유해서 사용할 수 있는 멤버가 가질 수 있는 상태의 종류가 개체의 수보다 상대적으로 적다면 플라이급 패턴을 사용하여 메모리 효율을 높일 수 있습니다. 플라이급 패턴에서는 공유해서 사용할 수 있는 상태들을 공유 풀에 형성합니다. 그리고 각 개체는 특정 상태를 참조합니다. 만약, 개체의 수가 상태의 수보다 ..

반응형