背景: 我最近在AS3中完成了一个tic-tac-toe游戏,使用了我多年前在C语言中编写的一些简单的基于函数的代码。 现在我正在努力做到使用面向对象技术和最佳实践的“正确方式”。 现在,所有东西都被分成整齐的小包装,它看起来很漂亮,而我旅程的最后一部分就是让所有的小狗们相互沟通。Actionscript OOP中的Getter/setter类和范围
我的困境: 我想将保存游戏状态的代码从我的主代码移到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/setter作为实例方法,我该如何让其他类从它们各自的包中引用SAME实例?
2)我是否需要getter和setter?也许这个班可能只有3个公共财产?如果是的话,我如何达到我的其他课程的适当范围?
3)我应该使用static关键字将所有内容分配给类本身吗?如果是这样,我将如何实现和使用这些静态方法?
4)这是错误吗?我完全只是将自己编入一个角落?
这似乎是一个很常见的任务,但我仍然不完全明白。一个简短的解释,一些链接,或我需要的技术名称将不胜感激。
由于提前, - 最大
那个单身的例子很漂亮。正是我所寻找的;谢谢。 – okayGraphics 2012-02-19 22:02:14