属性设计考虑事项
在设计和实现属性的时候,需要考虑如下问题:
1.属性可以是可读可写的、只读的或只写的。可读可写属性可以通过客户代码来检索或者设置。只读属性只能被检索,只写属性只能被设置。只写属性极少使用。通常应用程序开发者使用只写属性来向硬件设备发送数据,以便发送到硬件设备中的数据以后不能被检索。
2.当一个属性完全由其他属性决定时,应该使用只读属性。列如,在Rectangle类中,length和width两个属性是可读可写的,但是Area属性应该是只读属性
3.读取一个属性的值不应该产生副作用。类实例检索属性值时,类实例中的数据不应该发生变化。例如,应用程序开发者不希望因为检索了Rectangle对象的Area属性,而使对象width属性发生了变化。
4.合理的设计属性,以便属性能独立地以任何次序被更改。如果属性之间互相依赖,那么使用方法来设置他们。例如,如果需要在设置person对象的firstname属性之前先设置其lastname属性,那么可使用setfirstandlast函数来代替这两个属性。
5.使用属性而不使用方法的好处就在于其语法,显而易见,在语法上,rectangle.Length=15要比rectangle.setlength(15)简洁的多。
1.属性可以是可读可写的、只读的或只写的。可读可写属性可以通过客户代码来检索或者设置。只读属性只能被检索,只写属性只能被设置。只写属性极少使用。通常应用程序开发者使用只写属性来向硬件设备发送数据,以便发送到硬件设备中的数据以后不能被检索。
2.当一个属性完全由其他属性决定时,应该使用只读属性。列如,在Rectangle类中,length和width两个属性是可读可写的,但是Area属性应该是只读属性
3.读取一个属性的值不应该产生副作用。类实例检索属性值时,类实例中的数据不应该发生变化。例如,应用程序开发者不希望因为检索了Rectangle对象的Area属性,而使对象width属性发生了变化。
4.合理的设计属性,以便属性能独立地以任何次序被更改。如果属性之间互相依赖,那么使用方法来设置他们。例如,如果需要在设置person对象的firstname属性之前先设置其lastname属性,那么可使用setfirstandlast函数来代替这两个属性。
5.使用属性而不使用方法的好处就在于其语法,显而易见,在语法上,rectangle.Length=15要比rectangle.setlength(15)简洁的多。