在 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
墙头草 阅读(731)
评论(0) 编辑 收藏