Справочная информация: Недавно я завершил игру tic-tac-toe в AS3, используя простой простой функциональный код, который я написал на C много лет назад. Теперь я нахожусь в поиске «правильного пути», используя методы ООП и лучшие практики. Все теперь делится на аккуратные небольшие пакеты, это выглядит красиво, и последняя часть моего путешествия - заставить всех маленьких педерастов общаться друг с другом.Actionscript Getter/setter class & scope в OOP
Моя дилемма: Я хочу переместить код, содержащий состояние игры, из моего основного в собственный класс в 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. Если мне нужно вызвать мои методы getters/setters как методы экземпляра, как мне получить класс друг друга, чтобы ссылаться на SAME-экземпляр из их соответствующих пакетов?
2) Мне даже нужны геттеры и сеттеры? Возможно, у класса может быть только 3 общедоступных объекта? Если да, то каким образом я мог бы получить надлежащий охват в отношении моих других классов?
3) Должен ли я назначать все самому классу, используя ключевое слово static? Если да, то как мне реализовать и использовать эти статические методы?
4) Это ошибка? Неужели я просто запрограммировал себя в угол?
Это кажется довольно распространенной задачей, но тем не менее я до сих пор не совсем понимаю. Было бы весьма полезно получить краткое объяснение, некоторые ссылки или название техники, в которой я нуждаюсь.
Спасибо заранее, -Макс
это одиночный пример пример красивый. только то, что я искал; Спасибо. – okayGraphics