디자인 모드 학습 노트 (13) - 향 원 모드
4455 단어 디자인 모드
향 원 모드 (Flyweight Pattern)
바둑 게임 에서 유 저 는 2 - 6 명 이 고 모든 유 저 는 각자 한 가지 색깔 의 바둑 알 을 사용 할 수 있 습 니 다.현재 두 명의 유저 만 있다 고 가정 하고 빨간색 과 파란색 바둑 알 을 각각 사용한다.파란색 바둑돌 로 말하자면, 파란색 바둑돌 의 모든 바둑돌 은 좌 표를 제외 하고 색깔 이 모두 같다.그러면 색깔 이 파란색 인 것 은 파란색 바둑돌 의 내부 공 통 된 속성 이다. 파란색 바둑돌 의 서로 다른 상 태 는 바둑판 의 위치 에 있 고 파란색 바둑돌 의 외부 속성 으로 볼 수 있다.이 를 통 해 알 수 있 듯 이 우리 가 바둑 게임 소프트웨어 를 실현 하려 면 모든 바둑 알 에 똑 같은 자원 을 분배 하면 자원 낭 비 를 초래 할 수 있다.자원 의 지출 을 줄 이기 위해 서 이 를 통 해 향원 모델 을 도입 하 다.내 가 보기에 한 대상 중 일부 속성 은 몇 개의 대상 을 만 들 든 인 스 턴 스 는 변 하지 않 고 다른 부분 은 상황 에 따라 변 할 때 향 원 모드 를 사용 하여 이 대상 을 실현 할 수 있다. 는 향원 모델 에 포 함 된 역할 은 추상 향원 류 (Flyweight), 구체 향원 류 (Concrete Flyweight), 향원 공장 류 (Flyweight Factory) 가 있다.향 원 공장 에 서 는 향 원 지 를 유지 해 향 원 대상 을 보관 하 는 데 쓰 인 다.상기 글 중의 빨간색 과 파란색 쌍방 이 바둑 을 두 며 대국 하 는 것 을 예 로 들 어 demo 를 드 립 니 다.
import java.util.HashMap;
/*
* ,
* */
abstract class Chess{
protected String color;
public abstract void placeChess(int x,int y);
}
/*
* ,
* */
class ConcreteChess extends Chess{
public ConcreteChess() {
super();
}
public ConcreteChess(String color){
this.color=color;
}
@Override
public void placeChess(int x, int y) {
System.out.println(" :"+this.color+" :("+x+","+y+")");
}
}
/*
*
* */
class ChessFactory{
//
private static HashMap hashMap=new HashMap();
public static Chess getChess(String color){
if(hashMap.containsKey(color)){
System.out.println("Get Chess From Flyweight Pool");
return hashMap.get(color);
}else{
ConcreteChess newChess=new ConcreteChess(color);
hashMap.put(color, newChess);
return newChess;
}
}
}
public class FlyweigthPattern {
public static void main(String[] args){
ConcreteChess redChess=(ConcreteChess)ChessFactory.getChess("red");
ConcreteChess blueChess=(ConcreteChess)ChessFactory.getChess("blue");
redChess.placeChess(1, 1);
blueChess.placeChess(2, 2);
redChess=(ConcreteChess)ChessFactory.getChess("red");
blueChess=(ConcreteChess)ChessFactory.getChess("blue");
}
}
실행 결과 바둑 알: red 위치: (1, 1) 바둑 알: blue 위치: (2, 2) Get Chess From Flyweight Pool
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
디자인 모델 의 공장 모델, 단일 모델자바 는 23 가지 디자인 모델 (프로 그래 밍 사상/프로 그래 밍 방식) 이 있 습 니 다. 공장 모드 하나의 공장 류 를 만들어 같은 인 터 페 이 스 를 실현 한 일부 종 류 를 인 스 턴 스 로 만 드 는 것...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.