java访问器怎么写_Java访问器/突变程序-编程形式

使用存取器/变异器的好处是什么?

有很多:

在getter和setter后面隐藏状态可以让您更灵活地更改类状态的内部表示,而不必破坏其他使用状态的类。

当状态被访问或改变时,getter和setter允许类做一些事情。例如,setter可以在设置、触发事件等之前进行验证。getter可以返回数组或集合属性的副本,以避免将类状态暴露于意外(或故意/恶意)更改的可能性中。

getter和setter可以同步。

如果按照“JavaBean”规则实现,则可以启用各种对象“布线”框架。

getter和setter的缺点是最小的:

任何半正方形的Java IDE都可以在两个击键中生成属性的GET/SETTER对。如果您让您的IDE生成getter和setter,它们也不会有问题。

虽然getter和setter会使源代码文件变大,但在读取代码时通常不需要注意它们。IDE也有帮助。

在运行时,简单的getter和setter将被内联,因此性能与直接读取或写入公共属性是不可区分的。

[我对公开数组和集合的“故意/恶意”更改的附加说明

只有

当安全沙盒中不受信任的代码可能调用代码时应用。正如评论者指出的那样,

private

属性未安全隐藏…除非您还可以防止任何不受信任的代码使用反射。但是,如果您处于这种情况下,我关于只返回副本的观点可能是安全关键的。]

我有一块由瓷砖组成的木板。我做了一个

Board

类和

Tile

班级。Board对象由一个多维的平铺数组组成。Board类中的tiles的mutator应该通过为坐标取两个额外参数来设置数组还是数组中的每个tile?什么是更好的编程形式?

如果没有更多的细节,我会说

董事会

类应具有方法:

public void setTileAt(Tile tile, int x, int y) {...}

public Tile getTileAt(int x, int y) {...}

你可能

不应该

有方法:

public void setTiles(Tile[][] tiles {...}

public Tile[][] getTiles() {...}

因为它们(很可能)暴露了

董事会

类到应用程序中(理想情况下)不需要了解的部分。

根据应用程序的详细信息,

可以

适合使用某种

Point

类,而不是整数板坐标对(向量)。

显然,如果你试图实现一个游戏算法,它需要检查大量的游戏状态来找出“最佳”的移动方式,那么你可能想以性能的名义进行妥协。但这种“微观优化”通常是个坏主意。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值