Справочная информация:
Недавно я закончил игру Tic-Tac-Toe в AS3, используя некоторый простой функциональный код, который я написал на C много лет назад.
Сейчас я нахожусь в поиске, чтобы сделать это "правильным способом", используя методы ООП и лучшие практики.
Все теперь разделено на аккуратные маленькие пакеты, это выглядит красиво, и последняя часть моего путешествия состоит в том, чтобы заставить всех маленьких педерастов общаться друг с другом.
Моя дилемма:
Я хочу переместить код, содержащий состояние игры, из моего основного класса в собственный класс в com.okaygraphics.model.GameState.
Проблема состоит в том, что почти каждый второй пакет получает и устанавливает эти свойства состояния игры.
Я пытаюсь найти самый простой способ инкапсулировать этот материал, но при этом позволяю другим классам получать к нему доступ.
Где я нахожусь:
package com.okaygraphics.model{
public class GameState {
private var _player1State:uint=0x00000000;
private var _player2State:uint=0x00000000;
private var _activePlayer:int=0;
public function get p1GameState():uint {
return _player1State;
}
public function set p1GameState(value:uint):void {
_player1State = value;
}
public function get p2GameState():uint {
return _player2State;
}
public function set p2gameState(value:uint):void {
_player2State = value;
}
public function get activePlayer():int {
return _activePlayer
}
public function set activePlayer(value:int):void {
_activePlayer = value;
}
}
}
Qestions:
1) Мне нужен конструктор? Я имею в виду, что моя программа никогда не будет иметь более одного GameState. Если я должен вызывать мои методы получения / установки как методы экземпляра, как я могу заставить каждый другой класс ссылаться на тот же экземпляр из их соответствующих пакетов?
2) Мне вообще нужны геттеры и сеттеры? Возможно, у класса могло быть только 3 открытых свойства? Если да, то как бы я смог достичь нужного уровня в отношении других моих классов?
3) Должен ли я присвоить все самому классу, используя ключевое слово static? Если да, то как бы я реализовал и использовал эти статические методы?
4) Это ошибка? Я просто запрограммировал себя в угол?
Это кажется довольно обычной задачей, но я до сих пор не до конца ее понимаю. Краткое объяснение, некоторые ссылки или название техники, которая мне нужна, будет принята с благодарностью.
Заранее спасибо,
-Макс