디자인 모드 의 Composite 모드

3228 단어
디자인 모드 의 Composite 모드
만약 에 오늘 애니메이션 편집 프로그램 을 개발 하려 고 한다 면 애니메이션 은 영화 격자 (Frame) 로 구성 되 고 여러 개의 그림 자 를 애니메이션 목록 으로 조합 할 수 있 습 니 다. 애니메이션 목록 도 완 성 된 다른 애니메이션 목록 으로 구성 할 수 있 고 애니메이션 목록 과 목록 사이 에 개별 그림 자 를 추가 할 수 있 습 니 다.영화 칸 이나 애니메이션 리스트 를 모두 재생 할 수 있 고 애니메이션 리스트 는 조합 영화 칸 이나 애니메이션 리스트 를 담당 하기 때문에 이렇게 디자인 할 수 있다.
프레임 에 있어 서 플레이 리스트 는 용기 이지 만 플레이 리스트 도 실제 플레이 가능 하기 때문에 재생 할 수 있 습 니 다. 플레이 리스트 를 다른 플레이 리스트 에 조합 하여 더 긴 재생 목록 을 만 들 수 있 습 니 다.자바 로 이 루어 지면
자바 로 이 루어 지면
import java.util.*;

interface Playable {
void play();
}

class Frame implements Playable {
private String image;
Frame(String image) {
this.image = image;
}
public void play() {
System.out.println(" " + image);
}
}

class Playlist implements Playable {
private List<Playable> list = new ArrayList<Playable>();
public void add(Playable playable) {
list.add(playable);
}
public void play() {
for(Playable playable : list) {
playable.play();
}
}
}

public class Main {
public static void main(String[] args) {
Frame logo = new Frame(" LOGO");

Playlist playlist1 = new Playlist();
playlist1.add(new Frame("Duke "));
playlist1.add(new Frame("Duke "));

Playlist playlist2 = new Playlist();
playlist2.add(new Frame("Duke "));
playlist2.add(new Frame("Duke "));

Playlist all = new Playlist();
all.add(logo);
all.add(playlist1);
all.add(playlist2);

all.play();
}
}
Python 으로 이 루어 지면:
class Frame:
def __init__(self, image):
self.image = image
def play(self):
print(" " + self.image)

class Playlist:
def __init__(self):
self.list = []
def add(self, playable):
self.list.append(playable);
def play(self):
for playable in self.list:
playable.play()

logo = Frame(" LOGO")

playlist1 = Playlist()
playlist1.add(Frame("Duke "))
playlist1.add(Frame("Duke "))

playlist2 = Playlist()
playlist2.add(Frame("Duke "))
playlist2.add(Frame("Duke "))

all = Playlist()
all.add(logo)
all.add(playlist1)
all.add(playlist2)

all. play ();UML 로 Composite 모드 의 구 조 를 표시 합 니 다.
계층 적 이거 나 조합 성 이 있 는 아 이 템 은 Composite 모드 를 사용 할 수 있다. 예 를 들 어 회로 소자, 윈도우 소자 등 이다. Composite 모드 를 사용 하면 이러한 소자 디자인 의 복잡 도 를 크게 낮 출 수 있다. 자바 표준 API 에서 AWT 윈도우 부품 을 예 로 들 면
Component 에 paint () 방법 이 있 습 니 다. 부품 을 그 릴 수 있 습 니 다.
Container 는 Component (예 를 들 어 Button, Label 등) 를 수용 할 수 있 고 Container 는 Component 를 계승 하기 때문에 Container 도 Container 를 수용 할 수 있다. 이것 도 Composite 모델 의 실제 예 이다. 
from :  http://caterpillar.onlyfun.net/Gossip/index.html

좋은 웹페이지 즐겨찾기