posts - 241,  comments - 116,  trackbacks - 0

 在 Java 中使用一个 getter 和 setter 符号,为对象的属性提供一致的接口已成为一种标准实践。我们在 Java 中不进行以下操作是有原因的:

public String fullName;

实际上,上述代码在类及类的实现者之间创建了一个接口(或合同),该接口不允许我们在类的实例上访问 fullName 属性时更改返回结果的基础实现dota流浪剑客和水晶室女等英雄初期装备攻略。因此,如果有人使用 Java 代码访问数码 fullName 属性:

blah = obj.fullName;

或者设置 fullName 属性:

obj.fullName = "blah";

那么,在 Java 中没有办法更改获取或设置 fullName 属性的行为。如果类的设计者想要更改获取或设置属性的基础行为,他们必须更改类实现者与类进行交互的方式。这显然不是理想之选,所以在 Java 中我们通常使用 get 和 set 函数隐藏属性。Java 语言尚无 Java 属性,所以我们使用多种方法来隐藏实现。因此,我们的 Java 类将是:

private String fullName;

public String getFullName() {
return fullName;
}

public void setFullName(String fullName) {
this.fullName = fullName;
}

这允许类设计者更改获取和设置 fullName 属性的行为,同时不更改外部接口。

在 Flex 中,通常不必在对象上创建包装 getter 和 setting 函数,因为 ActionScript 支持属性。这意味着,您通常仅可以创建如下的公共属性: 

public var fullName:String;

如果获取或设置 fullName 属性的内部实现需要更改,那么可以改编类,以具备 getter 和 setter 函数,而无需更改类的外部接口:

private var _fullName:String;

public function get fullName():String {
return _fullName;
}

public function set fullName(_fullName:String):void {
this._fullName = _fullName;
}

对于类实现者来说,属性 fullName 还可以通过常规符号获取和设置:

// getters
blah = obj.fullName;
blah = obj['fullName'];
// setters
obj.fullName = "blah";
obj['fullName'] = "blah";

获取或设置属性将调用 getter 和 setter 函数,而不是直接访问属性。这支持对象接口的一致性,即便获取和设置属性的基础实现发生了更改。这同样支持属性发生更改时类分配事件(这就是数据绑定是如何在 Flex 内部工作的)。

我注意到很多 Java 开发人员都对 ActionScript 类上的公共属性非常警惕。不必!ActionScript 支持真正的属性,因此您不再需要属性 getter 和 setter,除非您正在进行一些非同寻常的操作。而且,您可以切换到 getter 和 setter,而无须更改对象的接口。

posted on 2010-11-06 15:09 墙头草 阅读(727) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航:
 
人人游戏网 软件开发网 货运专家