为了好玩和学习,我正在用Dart构建一个简单的游戏引擎.我已经定义了一个抽象Game类.A Game具有Director director管理场景转换的字段.这个类也是抽象的.每一个具体的游戏必须实现自己的具体Game和Director类,说MyGame和MyDirector.
我正在设置这样Game的导演:
abstract class Game {
Director director;
Game() {
director = createDirector();
}
Director createDirector();
}
Run Code Online (Sandbox Code Playgroud)
MyGame(继承自Game)实现createDirector().
使用此方法,Dart会为该director字段生成一个setter,以便Game实例的用户可以像这样更改它game.director = something;.我不希望那是可能的.解决这个问题的常用方法是创建director字段final,但由于在Game构造函数(而不是初始化列表)中分配/创建它的方式,我不能这样做.
director在这种情况下如何禁用setter 的生成?
使它成为final推荐的,但实际上你无法在构造函数中分配它.
或者,您可以执行样式指南认为不可取的操作,使用没有setter的getter包装私有字段:
abstract class Game {
var _director;
get director => _director;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
142 次 |
| 最近记录: |