Как сгруппировать связанный набор элементов данных и функций, где должен быть только один экземпляр этой группы? - PullRequest
0 голосов
/ 09 декабря 2011

considier, я пишу код для class GUIManager простой MineSweeperGame.

Здесь

     class GUIManager{
            class GameBoardManager{...}  
            class IconManager{...}
            class BoardMenuBar{...}
            class BoardManager{...}
            class DataManager{...} 
}

Но по-настоящему неприятная вещь, которую я чувствовал,

Мне нужен ровно один экземпляр каждого внутреннего класса. Я сделал эти внутренние классы только для того, чтобы улучшить группировку и читабельность

Невозможно передать эту информацию (приведенную в цитате) будущим разработчикам этого кода.

Следовательно, мой вопрос,

Возможен ли какой-либо особый тип классов, чтобы можно было создать только один объект этого класса? Т.е. создание 2 объектов даст ошибку компиляции. или что я должен сделать сейчас, чтобы настаивать на (блочной цитате) информации.

Ухудшение сценария,

public class GUIManager extends JFrame 
 {       
      final GameBoardManager gUIGameBoard;
      final BoardMenuBar menuBar;
      final GameInfoDisplayer gameInfoDisplayer;
      final DataManager dataManager;
      final IconManager   iconManager;
      .....    
 } 

при доступе к элементам я должен использовать gUIGameBoard.boardButton[][], gUIGameBoard.dimensionOfBoard, gUIGameBoard.boardColor и т.д ...

При доступе таким образом это звучит так ... У меня есть много объектов для GameBoardManager, и здесь я получаю доступ к элементу gUIGameBoard. Но реальный факт в том, что только один GameBoardManager возможен только для GUIManager. Это аналогично другим объектам внутренних классов.

Следовательно, мой вопрос? У меня должен быть только один GameBoardManager для GUIManager, возможно ли группировать связанные элементы без создания внутреннего класса. Поскольку при доступе к объекту внутреннего класса звучит так, будто у меня их много.

1 Ответ

0 голосов
/ 09 декабря 2011

Если конструкторы всех ваших внутренних классов являются закрытыми, никто, кроме GUIManager, не сможет их создать.Добавьте комментарий, и это разумный подход.

Однако ваш класс может нуждаться в реструктуризации - это много внутренних классов!

...