Как правильно передавать параметры из класса А в класс С через класс B? - C#

Узнай цену своей работы

Формулировка задачи:

Всем привет! Пишу игру - Морской бой! Есть класс Game. Также есть класс Battlefield (модель поля, где корабли располагаются). Но нам нужно два таких поля - для себя и для второго игрока. Поэтому у меня есть класс BattlefieldController, в котором создаётся контейнер с двумя такими полями. Но вот в чём проблема. В Battlefield класс надо передать переменную, отвечающую за размер этого поля (10 на 10). Поскольку из класса Game я работаю с классом Battlefield непосредственно через класс BattlefieldController, то мне надо перередавать эту переменную размера именно в этот контроллер, хотя по сути самому контроллеру эта переменная не нужна. Вот пример: Game.cs:
public Game(GameType gameType)
        {
            this.gameType = gameType;
            ApplySettings();
        }
 
        private void ApplySettings()
        {
            switch (gameType)
            {
                case GameType.Russian:
                    Size battlefieldDimension = new Size(10, 10);
                    battlefieldController = new BattlefieldController(battlefieldDimension);
                    shipController = new ShipController(battlefieldDimension, 1, 2, 3, 4);
                    break;
                default:
                    break;
            }  
        }
 
        public Grid GetBattlefields()
        {
            return battlefieldController.BattlefieldsContainer;
        }
BattlefieldController.cs:
public BattlefieldController(Size battlefieldDimension)
        {
            this.battlefieldsDimension = battlefieldDimension;
        }
 
        public Grid BattlefieldsContainer
        {
            get
            {
                return battlefieldsContainer ?? CreateBattlefieldsContainer();
            }
 
            private set
            {
 
            }
        }
 
        private Grid CreateBattlefieldsContainer()
        {
            создаю два экземпляра класса Battlefield (модель), используя battlefieldsDimension переменную.
        }
То есть переменная this.battlefieldsDimension нужна только для того чтобы один раз ее передать и мне это не очень нравится. Нормально ли это? Или лучше вызывать метод CreateBattlefieldsContainer() прямо из конструктора, что как бы тоже не очень нравится, если честно.
У меня пришла одна идея. Может сделать наследование?

Решение задачи: «Как правильно передавать параметры из класса А в класс С через класс B?»

textual
Листинг программы
public Battlefield(string name, Size dimension)
        {
            Name = name;
            Dimension = dimension;
            StrokeThickness = 1;
            StrokeColor = Colors.Black;
 
            CreateGrid();
            CreateBarIndexing();
            CreateLegend();
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4 из 5
Похожие ответы