디자인 모드 의 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
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.