【发布时间】:2012-02-19 20:10:19
【问题描述】:
背景: 我最近在 AS3 中完成了一个井字游戏,使用的是我多年前用 C 语言编写的一些简单的基于函数的代码。 现在我正在寻求使用 OOP 技术和最佳实践以“正确的方式”来做这件事。 现在所有的东西都分成了整齐的小包,看起来很漂亮,我旅程的最后一部分是让所有的小虫子互相交流。
我的困境: 我想将保存游戏状态的代码从我的 main 移动到 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;
}
}
}
问题:
1) 我需要构造函数吗?我的意思是,我的程序永远不会有多个 GameState。如果我应该将我的 getter/setter 调用为实例方法,我如何让其他类从它们各自的包中引用相同的实例?
2) 我还需要 getter 和 setter 吗?也许这个类可能只有 3 个公共属性?如果是这样,我将如何获得其他课程的适当范围?
3) 我应该使用 static 关键字将所有内容分配给类本身吗?如果是这样,我将如何实现和使用这些静态方法?
4) 这是一个错误吗?我完全只是把自己编程到了一个角落吗?
这似乎是一项非常常见的任务,但我仍然不完全理解。非常感谢您提供简要说明、一些链接或我需要的技术名称。
提前致谢, -最大
【问题讨论】:
标签: actionscript-3 oop scope getter-setter