Как правильно передавать параметры из класса А в класс С через класс B? - C#
Формулировка задачи:
Всем привет! Пишу игру - Морской бой! Есть класс Game. Также есть класс Battlefield (модель поля, где корабли располагаются). Но нам нужно два таких поля - для себя и для второго игрока. Поэтому у меня есть класс BattlefieldController, в котором создаётся контейнер с двумя такими полями. Но вот в чём проблема. В Battlefield класс надо передать переменную, отвечающую за размер этого поля (10 на 10). Поскольку из класса Game я работаю с классом Battlefield непосредственно через класс BattlefieldController, то мне надо перередавать эту переменную размера именно в этот контроллер, хотя по сути самому контроллеру эта переменная не нужна. Вот пример:
Game.cs: BattlefieldController.cs: То есть переменная this.battlefieldsDimension нужна только для того чтобы один раз ее передать и мне это не очень нравится. Нормально ли это? Или лучше вызывать метод CreateBattlefieldsContainer() прямо из конструктора, что как бы тоже не очень нравится, если честно.
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; }
public BattlefieldController(Size battlefieldDimension) { this.battlefieldsDimension = battlefieldDimension; } public Grid BattlefieldsContainer { get { return battlefieldsContainer ?? CreateBattlefieldsContainer(); } private set { } } private Grid CreateBattlefieldsContainer() { создаю два экземпляра класса Battlefield (модель), используя battlefieldsDimension переменную. }
У меня пришла одна идея. Может сделать наследование?
Решение задачи: «Как правильно передавать параметры из класса А в класс С через класс B?»
textual
Листинг программы
public Battlefield(string name, Size dimension) { Name = name; Dimension = dimension; StrokeThickness = 1; StrokeColor = Colors.Black; CreateGrid(); CreateBarIndexing(); CreateLegend(); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д