不可变对象

✍ dations ◷ 2025-04-05 00:43:23 #程式设计小作品,面向对象的程序设计,函数式编程

在面向对象及函数编程语言中,不可变对象(英语:Immutable object)是一种对象,在被创造之后,它的状态(成员变量、属性等的值)就不可以被改变。至于状态可以被改变的对象,则被称为可变对象(mutable object)。

不可变意味着只读不写,因此不可变对象天然地具备线程安全的特性,即是说如无其它特殊限制的话可以在任何线程上自由调用。此外,相较于可变对象,不可变对象在一些场合下也较合理,易于了解,而且提供较高的安全性。

小型的不可变对象可以被有效率的复制,但是较大的不可变对象,如果想要有效率的被复制,就需要更复杂的一致性数据结构(persistent data structure)算法。因为性能的缘故,有时候会以可变对象来加以取代不可变对象。

典型的例子例如字符串对象:C++ STL 中的 std::basic_string<T> 是可变的,即可以修改一个 std::basic_string<T> 对象所表示的字符串;而 .net 中的 System.String 是不可变的,System.Text.StringBuilder 才像 std::basic_string<T> 一样可变。

相关

  • 鹿花菌孢印黄色异养腐生真菌美味鹿花菌(学名:Gyromitra esculenta),又名鹿花蕈或河豚菌,是鹿花菌属下的假羊肚菌,分布在欧洲及北美洲。它们生长在针叶林的沙质土壤,于春天及初夏长成。子
  • 马来半岛马来半岛(英语:Malay Peninsula,马来语:Semenanjung Tanah Melayu)位于亚洲大陆最南端,是东南亚中南半岛的一个主要半岛,与苏门答腊岛隔着马六甲海峡,是为太平洋和印度洋的分界线。
  • 生乳生乳是指奶畜乳房中挤出的未经过巴氏消毒等方式加工的常乳,最初温度一般和牲畜体温相似。根据中华民国99年7月2日署授食字第0991301848号令发布,生乳是指从“符合有关要求的健
  • 豌豆属豌豆属(学名:Pisum)是豆科蝶形花亚科的一个属,为一年生或多年生草本植物,分布于地中海和西亚。豌豆属有以下两个种:
  • 澎湖群岛澎湖群岛,亦称澎湖列岛,是位于台湾海峡上的一组群岛,东距台湾本岛约50公里,西离中国大陆约140公里,由90个大小岛屿组成,总面积约为128平方公里,全境均隶属中华民国台湾省澎湖县管辖
  • 趋势图趋势图(英文:run chart),也称运行图、链图、走势图,是一类在时间序列中表达数据变量的统计图表,通常该数据在一些工业或商业过程中可用来表达特定程序的表现。趋势图为一类简易的
  • 欧裔美国人欧裔美洲人(英文:European American)指血统源自欧洲人但现居于美国的欧洲移民。他们主要是欧洲殖民者的后代。欧洲裔美国白人普遍是中产阶层或富有,接受教育程度高并拥有高学历,
  • 智辩家智辩家(希腊语:σοφιστής, )是古希腊公元前5世纪至4世纪时的一种类型的教师。他们中的许多善于哲学和修辞学,但也有人教授音乐、体育和数学。他们通常声称自己传授Arete(
  • 福特制福特制(英语:Fordism)描述一套基于工业化和标准化大量生产和大量消费的经济和社会体系。这个(以亨利·福特来命名的)概念广泛运用在,特别是有关20世纪的生产、工作条件、消费和其
  • 项斑长尾须鲨项斑长尾须鲨(学名:)是分布在澳洲北部和西南部,北纬8°至22°,东经114°E和152°E之间,天竺鲨科的竹鲨。能长到79 cm,栖息于浅珊瑚礁中。繁殖方式为卵生。