나는 카드 게임을 만들려고합니다.카드 게임에서 mvc 디자인
내가 가지고있는 몇 가지 클래스는 다음과 같습니다. CardModel, CardView; DeckModel, DeckView.
데크 모델에는 카드 모델 목록이 있습니다. MVC에 따르면 카드를 데크에 보내려면 카드 모델을 데크 모델에 추가하면 카드보기가 데크에 추가됩니다 이벤트 처리기로보기.
DeckModel 클래스에 addCard (CardModel m)가 있지만 데크보기에 해당 모델의 카드보기를 추가하는 이벤트를 보내려는 경우 모델에보기 참조 만 허용됩니다. .
질문 : 카드 모델 및 데크 모델에보기 클래스에 대한 참조가 있어야한다면 어떻게해야합니까? 그렇지 않다면 어떻게하는 것이 좋습니까?
업데이트 코드 : 좋은 MVC 모델에서
public class DeckModel {
private ArrayList<CardModel> cards;
private ArrayList<EventHandler> actionEventHandlerList;
public void addCard(CardModel card){
cards.add(card);
//processEvent(event x);
//must I pass a event that contain card view here?
}
CardModel getCards(int index){
return cards.get(index);
}
public synchronized void addEventHandler(EventHandler l){
if(actionEventHandlerList == null)
actionEventHandlerList = new ArrayList<EventHandler>();
if(!actionEventHandlerList.contains(l))
actionEventHandlerList.add(l);
}
public synchronized void removeEventHandler(EventHandler l){
if(actionEventHandlerList!= null && actionEventHandlerList.contains(l))
actionEventHandlerList.remove(l);
}
private void processEvent(Event e){
ArrayList list;
synchronized(this){
if(actionEventHandlerList!= null)
list = (ArrayList)actionEventHandlerList.clone();
else
return;
}
for(int i=0; i<actionEventHandlerList.size(); ++i){
actionEventHandlerList.get(i).handle(e);
}
}
}
문제를 설명하는 대신 적절한 코드 조각을 추가하십시오. – Chris