-
[정보처리기사] 디자인패턴: FlyWeight (java)정보처리기사 2022. 10. 8. 21:11
FlyWeight
어떤 클래스의 인스턴스 한 개만 가지고 여러개의 가상 인스턴스를 생성하는 패턴
즉 인스턴스를 가능한대로 공유시켜 new연산자를 최소한으로 사용하여 메모리를 절약하는 방식이다.
구조
- FlyWeight : 최상위 인터페이스
- ConcreteFlyWeight: FlyWeigth를 구현한 클래스
- FlyWeightFactory: FlyWeight인스턴스를 공유하고 생성하는 클래스
도형 예제
- FlyWeight: Shape
public interface Shape{ public void draw(); }
- ConcreteFlyWeight: Circle
public class Circle implements Shape{ private String color; private int x; private int y; private int radius; public Circle(String color){ this.color = color; } public void setX(int x){ this.x = x; } public void setY(int y){ this.y = y; } public void setColor(String color){ this.color = color; } public void setRadius(int radius){ this.radius = radisu; } @Override public void draw(){ System.out.println("color:"+color+"x:"+x+"y:"+y+"radius:"+radius); } }
- FlyWeightFactory: ShapeFactory
public class ShapeFactory{ private static final HashMap<String,Circle> circleMap = new HashMap<>(); public static HashMap<String,Circle> getCircle(Strinc color){ Circle circle = (Circle)circleMap.get(color); if(circle==null){ circle = new Circle(color); circleMap.put(color,circle); } return circle; } }
중복된 색의 circle이 생성되는 것을 막고 생성된 circle인스턴스를 ShapeFactory에서 관리한다.
'정보처리기사' 카테고리의 다른 글
[정보처리기사] 응용 SW 기초 기술 활용 (0) 2022.10.13 [정보처리기사] 정처기 재수 3일차 : Decorator패턴 (java) (1) 2022.09.26 [정보처리기사] 정처기 재수 2일차: Bridge 패턴(java) (1) 2022.09.24 [정보처리기사] 정처기 재수 1일차 : 요구사항 확인 (0) 2022.09.23