日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java integer 不变模式_Java代码的变与不变

發布時間:2025/3/21 java 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java integer 不变模式_Java代码的变与不变 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

哲學上說變與不變,講的是絕對運動與相對靜止的道理,在代碼設計中,也有許多變和不變之間的辯證故事。

有一些類在創建以后,整個生命周期內都不會發生變化,這種模式被稱為Immutable Pattern。

較弱的不變模式:指的是一個類的實例狀態是不可變化的,但是這個類的引用的實例卻可以變化。

比如說:Visitor模式常常是這樣的,整個流程是不可變的,但是我為我的整個流程提供靈活的切入點,提供出來訪問接口,供變化的部分完成。

較強的不變模式:一個類實例狀態不可變,其內部引用的所有實例也不可變。

這個就比較多了,JDK中的String、Integer、Byte等都是不可變的。

變化的場景需要考慮許多事情,因為變化帶來了“狀態”的概念。但正因為有了狀態,整個世界才豐富多彩。變化需要考慮共享訪問的情形,需要考慮狀態之間的關系。當我們享受到代碼變化帶來的愉悅,也開始追求不變的代碼,那一份古樸和單純。

不變,引伸出對象復用的好處來。無狀態的單例,很多場景下可以看作簡單的工具類;更多的對象在一定時期內無狀態,比如Prototype模式,比如線程池、緩存,這些都將哲學中的變與不變最終結合到代碼中去。不變,是快速的、簡單的、敏捷的,將變化的狀態連結起來了。

程序=算法+數據,算法是不變的,數據是可變的。仿佛從軟件的一開始,變與不變就給后續的萬事萬物埋下了伏筆,代碼的世界圍著這個特殊的視角旋轉。隨著動態語言的興盛,以往不可變的方法也可以被改變,方法本身也能變成對象,數據和算法輕而易舉地在代碼中變幻,我們越來越疑惑,還有什么不變的東西,可以讓我們徹底看清和相信一次?

Action是具備狀態的,線程獨立的;Service和DAO是無狀態的,是可以被池化的。不變得再極致一點,我希望從編譯之后它就是不變的,而不是對象創建之后不變,這就是方法。靜態語言中的方法邏輯本身就是不可變的;而另一方面,當方法內部所使用的一切變量,都嚴格被控制在方法內部的臨時變量或者按值傳遞的參數中,這說的,不正是函數式編程嗎?

也許,其實軟件的本質很簡單,我一直在思考,軟件復雜化的本質就是為了追求簡單的東西。就像這個變化莫測的世界,不變的故事,總是那么淅淅瀝瀝的,卻又驚人地相似。

本文的最后,Rod Johnson說:

If possible, design applications to use a stateless service layer. Hold state in the web tier, rather than in the business logic tier, if possible.

總結

以上是生活随笔為你收集整理的java integer 不变模式_Java代码的变与不变的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。