내 클래스 사용자에게 내 생성자가 기대하는 유효한 값을 알리는 방법

토머 요 스코 비치

이것은 디자인 문제입니다.

저는 콘솔 메모리 게임을 과제로 만들고 있습니다. 우리는 UI를 비즈니스 로직 클래스와 분리해야한다고 들었습니다. 그래서 Windows GUI로 게임을 구현해야 할 때 가능한 최대 값을 재사용 할 수 있습니다.

내 디자인에서 ConsoleUI, GameManager, MemoryGameBoard 클래스를 만들었습니다.

내 질문은 MemoryGameBoard (높이, 너비)의 유효성 검사와 관련이 있습니다. MemoryGameBoard이기 때문에 요소의 수가 짝수인지 (쌍을 다루기 때문에) 합법성을 확인하고 GameManager가 부과하는 규칙 (최대 행과 열)을 확인해야한다고 결정했습니다. 크기는 4/5/6 만 가능).

ConsoleUI는 사용자에게이 높이와 너비를 요청합니다. GameManager 또는 MemoryGameBoard에 따라 유효한 데이터가 제공 될 때까지 계속 다시 요청해야합니다.

높이 / 너비의 유효성을 테스트하는 방법은 어디에 있어야합니까?

감사.

마이크 스톡 데일

나는 일반적으로 생성자에서 유효성 검사를 피하려고합니다. GameBoardBuilder생성자 GameBoardBuilder(int width, int height)와 메서드가 있는 클래스를 사용 IsValid()하고 MakeGameBoard(). 따라서 다음과 같이 작성합니다.

while (true) {
   ... get input ...    
   var builder = new GameBoardBuilder(width, height);
   if (builder.IsValid()) break;
   ... report error ...
}
var gameBoard = builder.MakeGameBoard();

또는 GameManagerUI에서 사용 :

while (true) {
    .... get input ...
    gameManager.SetBoardSize(width, height);
    if (gameManager.IsBoardValid()) break;
    ... report error ...
}
gameManager.StartGame();

GameManager방법이 있는 곳 :

public void SetBoardSize(int width, int height) {
    builder = new GameBoardBuilder(width, height);
}

public bool IsBoardValid() { return builder != null && builder.IsValid(); }

public void StartGame() {
    var gameBoard = builder.MakeGameBoard();
    ...
}

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

ID 내의 클래스에 대한 CSS를 사용자 정의하는 방법

분류에서Dev

SignalR-특정 사용자에게 알림을 보내기 위해 다른 서버 측 클래스의 사용자 매핑에 액세스하는 방법

분류에서Dev

내 생성자가 값을 설정하지 못하게하는이 콜백에 대한 방법 제안

분류에서Dev

Firebase 관리자를 사용하여 기기에 알림을 보내는 방법

분류에서Dev

클래스 생성자 내에서 동적으로 할당 된 배열을 초기화하는 방법

분류에서Dev

기기와 독립적으로 내 애플리케이션의 각 사용자에 대해 고유 한 토큰을 생성하는 Firebase + Android 방법?

분류에서Dev

클래스 속성 내에서 값 클래스를 할당하는 방법

분류에서Dev

다른 클래스 내부에있는 동안 한 클래스에서 선언 된 사용자 지정 신호에 위젯을 연결하는 방법

분류에서Dev

Django의 클래스 기반 뷰 내에서 게시물을 사용하여 양식을 저장할 때 사용자를 저장하는 방법

분류에서Dev

클래스 내에서 배열 값을 변경하는 방법

분류에서Dev

내 웹 사이트에 가입하기위한 초대장을 사용자 Facebook 친구에게 보내는 방법.

분류에서Dev

내 웹 사이트에 가입하기위한 초대장을 사용자 Facebook 친구에게 보내는 방법.

분류에서Dev

C ++의 클래스 생성자 내부에서 스레드를 사용하는 방법은 무엇입니까?

분류에서Dev

내 클래스가 생성되는 객체의 소유자임을 어떻게 지정합니까?

분류에서Dev

ACL을 사용하여 한 사용자에게 디렉토리와 모든 내용을 제어하는 방법

분류에서Dev

사용자 정의 View 클래스 내에서 UIImageView를 사용하는 적절한 방법

분류에서Dev

내 클래스 필드가 생성자에서 파괴되는 이유

분류에서Dev

registerReceiver 내부 클래스에서 변수 값을 얻는 방법

분류에서Dev

다른 클래스의 방법 지역 내부 클래스와 동일한 이름을 가진 클래스에 액세스하는 방법

분류에서Dev

chmod를 사용하여 내 그룹의 단일 사용자에게 내 디렉토리에 대한 권한을 부여하는 방법은 무엇입니까?

분류에서Dev

신속하게 내 클래스에 동일한 이름의 하위 클래스가있을 때 최상위 클래스를 참조하는 방법

분류에서Dev

Android 애플리케이션 사용자에게 예기치 않은 이벤트 알림을 보내는 가장 간단한 방법은 무엇입니까?

분류에서Dev

클래스 내 캡슐화 된 속성에 대한 탐색을 정의하는 방법은 무엇입니까?

분류에서Dev

자바 스크립트의 클래스 내에서 카운터 값을 증가시키는 방법

분류에서Dev

클래스 내부의 클래스 객체가 기본 생성자없이 자동으로 생성되는 것을 방지하는 방법은 무엇입니까?

분류에서Dev

클래스 내부의 클래스 객체가 기본 생성자없이 자동으로 생성되는 것을 방지하는 방법은 무엇입니까?

분류에서Dev

외부 클래스 생성자에서 내부 클래스의 인스턴스를 만드는 방법

분류에서Dev

UIView를 내 사용자 정의 클래스에 연결하는 방법

분류에서Dev

자바 : 추상 클래스 내에서 확장 클래스의 이름을 가져 오는 메소드 생성

Related 관련 기사

  1. 1

    ID 내의 클래스에 대한 CSS를 사용자 정의하는 방법

  2. 2

    SignalR-특정 사용자에게 알림을 보내기 위해 다른 서버 측 클래스의 사용자 매핑에 액세스하는 방법

  3. 3

    내 생성자가 값을 설정하지 못하게하는이 콜백에 대한 방법 제안

  4. 4

    Firebase 관리자를 사용하여 기기에 알림을 보내는 방법

  5. 5

    클래스 생성자 내에서 동적으로 할당 된 배열을 초기화하는 방법

  6. 6

    기기와 독립적으로 내 애플리케이션의 각 사용자에 대해 고유 한 토큰을 생성하는 Firebase + Android 방법?

  7. 7

    클래스 속성 내에서 값 클래스를 할당하는 방법

  8. 8

    다른 클래스 내부에있는 동안 한 클래스에서 선언 된 사용자 지정 신호에 위젯을 연결하는 방법

  9. 9

    Django의 클래스 기반 뷰 내에서 게시물을 사용하여 양식을 저장할 때 사용자를 저장하는 방법

  10. 10

    클래스 내에서 배열 값을 변경하는 방법

  11. 11

    내 웹 사이트에 가입하기위한 초대장을 사용자 Facebook 친구에게 보내는 방법.

  12. 12

    내 웹 사이트에 가입하기위한 초대장을 사용자 Facebook 친구에게 보내는 방법.

  13. 13

    C ++의 클래스 생성자 내부에서 스레드를 사용하는 방법은 무엇입니까?

  14. 14

    내 클래스가 생성되는 객체의 소유자임을 어떻게 지정합니까?

  15. 15

    ACL을 사용하여 한 사용자에게 디렉토리와 모든 내용을 제어하는 방법

  16. 16

    사용자 정의 View 클래스 내에서 UIImageView를 사용하는 적절한 방법

  17. 17

    내 클래스 필드가 생성자에서 파괴되는 이유

  18. 18

    registerReceiver 내부 클래스에서 변수 값을 얻는 방법

  19. 19

    다른 클래스의 방법 지역 내부 클래스와 동일한 이름을 가진 클래스에 액세스하는 방법

  20. 20

    chmod를 사용하여 내 그룹의 단일 사용자에게 내 디렉토리에 대한 권한을 부여하는 방법은 무엇입니까?

  21. 21

    신속하게 내 클래스에 동일한 이름의 하위 클래스가있을 때 최상위 클래스를 참조하는 방법

  22. 22

    Android 애플리케이션 사용자에게 예기치 않은 이벤트 알림을 보내는 가장 간단한 방법은 무엇입니까?

  23. 23

    클래스 내 캡슐화 된 속성에 대한 탐색을 정의하는 방법은 무엇입니까?

  24. 24

    자바 스크립트의 클래스 내에서 카운터 값을 증가시키는 방법

  25. 25

    클래스 내부의 클래스 객체가 기본 생성자없이 자동으로 생성되는 것을 방지하는 방법은 무엇입니까?

  26. 26

    클래스 내부의 클래스 객체가 기본 생성자없이 자동으로 생성되는 것을 방지하는 방법은 무엇입니까?

  27. 27

    외부 클래스 생성자에서 내부 클래스의 인스턴스를 만드는 방법

  28. 28

    UIView를 내 사용자 정의 클래스에 연결하는 방법

  29. 29

    자바 : 추상 클래스 내에서 확장 클래스의 이름을 가져 오는 메소드 생성

뜨겁다태그

보관