2010-03-27 1 views
1

디자인 문제가 있습니다. 브러시 종류의 메서드의 serie를 호출하는 드로어 클래스가 있고 내가 그려야 할 미리 정의 된 셰이프가 있습니다. 각 도형은 서랍의 인스턴스 메서드 목록을 사용합니다. 나는 1 개 이상의 브러쉬 오브젝트를 가질 수 있습니다.
런타임에 서랍 인스턴스에 사용자 정의 모양을 추가하여 새 모양의 메소드 목록을 명확히하고 싶습니다.
저는 미리 정의 된 모든 도형에 대해 클래스 메소드를 생성했습니다.이 메소드는 지시와 함께 BlockClosure를 반환합니다. 분명히 나는 ​​각 BlockClosure에 브러시 객체를 매개 변수로 제공해야합니다. Drawer 클래스의 각 인스턴스에있는 모든 BlockClosures를 가진 콜렉션을 상상해 봅니다. 아마 SequenceableCollection을 상속하고 악기 컬렉션을 만들 수 있습니다. 컬렉션의 각 요소는 명령이며,이 새 컬렉션을 인스턴스화 할 때 브러시 객체를 제공합니다. 나는이 단계를 저장하는 가장 좋은 방법을 정말로 모른다.
(아마 공유 변수?)스토어 목록

+1

나는 당신이 원하는 것을 이해하지 못합니다. 도형처럼 들리는 데는 과 같은 메서드가 필요합니다. drawOn : aDrawer using : aBrush 도형과 서랍 사이의 드로잉 프로토콜이 선험적으로 알려지지 않았습니까? –

답변

1

은 어쩌면 당신은 "서랍"소리 때문에, 그 클래스에 대한 클래스 이름으로 (나는 "화가"를 원합니다 일부 MessageSend 인스턴스와 anActionSequence를 사용하고 서랍에 aDictionary에 넣어 수 있습니다 내 귀에있는 가구 부분과 매우 비슷합니다.

정확하게 달성하기를 원하는 것이 확실하지 않습니다.

+0

ActionSequence의 BlockClosure insted를 사용할 수 있는지 궁금합니다. 그러나 매개 변수가없는 BlockClosure 여야합니다. 나는 내가 할 수있는 것을 보았다 : 매개 변수^[aParameter doSomething]. 그러나 나는 그것을별로 좋아하지 않는다. 나는 메시지 값으로 계산할 수있는 Object를 반환하는 미리 정의 된 모든 모양에 클래스 메서드를 사용합니다. 나는 Closing 또는 ActionSequence jeje를 반환할지 결정해야합니다. 예 화가가 될 이름 Painter - - –

+0

하지만 프로그램에 aBlock 또는 anActionSequence간에 차이가없는 것 같습니다. 어쩌면 일부 소스 코드를 게시 할 수 있습니다 ^^ –

0

Bongiorno, Luciano! La domanda di Lei 이외에 troopo chiara. 어 ... 영어를 오히려 사용하고 이탈리아어는 다소 가난합니다.

귀하의 질문은 명확하지 않습니다. 문제의 맥락을 더 많이 알면 도움이 될 수 있습니다. 어떤 소프트웨어를 개발하고 있습니까? 왜 '서랍'(또는 페인터) 클래스의 인스턴스가 많이 필요한가요?

내가 지금 추측 할 수 있었던 것을 바탕으로, 인터프리터 패턴의 변형이 필요하다고 가정합니다. "Gang of Four"(디자인 패턴 : 재사용 가능한 객체 지향 소프트웨어의 요소)은 모든 프로그래머에게 꼭 읽어야 할 책입니다. Smalltalker의 경우 Sherman Alpert, Kyle Brown 및 Bobby Woolf의 "Design Patterns Smalltalk Companion"을 매일 참조로 사용하는 것이 좋습니다.

죄송합니다. 현재이 문제는 귀하의 문제와 관련하여 제공 할 수있는 조언입니다.