檔案複制程式:
将一個檔案複制一份出來,實作方法很簡單,使用FileInputStream讀取檔案内容,然後使用FileOutputStream寫入另一個檔案,利用read方法的傳回值作為while循環的條件,進行一邊讀一邊寫。
代碼示例:
<a href="https://s3.51cto.com/oss/201710/27/c52fe6c2bab188bc0b7574fcb50ed967.png" target="_blank"></a>
統計連續的重複位元組:
将連續5個以上重複的位元組統計一下,并且将重複的數量和所有重複位元組的總數量列印出來。
實作這個程式,主要思路是單個位元組的讀取,每讀取一個位元組就記錄下來,然後和下一次讀取的位元組進行對比比否相等,相等代表重複。就再用一個count變量記錄重複的次數,如果不相等就代表不重複就需要把這個變量歸零重新記錄。還需要一個total變量來記錄每次重複的次數總和,隻需要加個判斷條件,隻要count大于等于5就令total+=count即可。
<a href="https://s1.51cto.com/oss/201710/27/b1bc1e02bc7642ebfc95c4ed42352475.png" target="_blank"></a>
運作結果:
<a href="https://s5.51cto.com/oss/201710/27/f29e6b014f9182ca7c5f364fbffe4feb.png" target="_blank"></a>
裝飾設計模式:
裝飾設計模式,顧名思義就是給某樣東西、某個對象進行裝飾。裝飾設計模式可以利用繼承或實作接口的方式,給一個基礎的對象增加新的功能,就像一個毛坯房,可以通過裝修之後變成漂亮的房子,有點類似于能夠進行功能上的疊加。
下面以蛋糕為主題進行一個裝飾設計模式的過程:
先使用一個接口定制好方法:
<a href="https://s4.51cto.com/oss/201710/27/98e194bc72cf1e08dd8ec143770bc050.png" target="_blank"></a>
然後寫一個最基礎的類,在蛋糕裡最基礎的類就是普通蛋糕了,在這個類裡需要實作接口。
<a href="https://s2.51cto.com/oss/201710/27/ff7eb5faef3f65ccbb13f81b74f6cf94.png" target="_blank"></a>
接着就是其他可以以蛋糕這個類為基礎擴充的類,例如草莓蛋糕:
<a href="https://s1.51cto.com/oss/201710/27/b4a9bcac5cf144345b4fbfc592f74716.png" target="_blank"></a>
願意的話可以寫任意個這樣的類,但是基本規則都是一樣:
代碼示例:
<a href="https://s5.51cto.com/oss/201710/27/1339edec74551d6ab92005fade0cd7f5.png" target="_blank"></a>
體系寫完後,可以使用測試類測試效果:
<a href="https://s3.51cto.com/oss/201710/27/4ad92b9b49876092b46d2d6ef41adfed.png" target="_blank"></a>
<a href="https://s1.51cto.com/oss/201710/27/8ccfcf2af2235c713659c6c4c827e246.png" target="_blank"></a>
再增加(裝飾)一個對象:
<a href="https://s2.51cto.com/oss/201710/27/0ff230f3cc409e22605c05c08e1435d7.png" target="_blank"></a>
<a href="https://s5.51cto.com/oss/201710/27/c18b088031f579cb55485bfb5788e027.png" target="_blank"></a>
可以增加任意個對象:
<a href="https://s2.51cto.com/oss/201710/27/787ad5f32694d4530bdc4db1d5149247.png" target="_blank"></a>
<a href="https://s2.51cto.com/oss/201710/27/dec0b714a4b58f6a23e5337e5f78b090.png" target="_blank"></a>
也可以隻使用基礎類對象:
<a href="https://s5.51cto.com/oss/201710/27/03546f7efcb029f5ca56416f83538b14.png" target="_blank"></a>
<a href="https://s5.51cto.com/oss/201710/27/88e620728806f56100c6b80019b891dd.png" target="_blank"></a>
寫信的例題:
也是同樣先定義一個接口或者抽象類:
<a href="https://s3.51cto.com/oss/201710/27/b5fe8b1be9c5882c17f33265abe39e31.png" target="_blank"></a>
然後再定義一個基礎實作類:
<a href="https://s3.51cto.com/oss/201710/27/679bd6669b1b660b373847634f5c0d47.png" target="_blank"></a>
有些人喜歡在信件上噴點香水,是以可以寫一個香水的擴充類:
<a href="https://s5.51cto.com/oss/201710/27/1847fc589950f673738f34f3f07b7737.png" target="_blank"></a>
如果寫的是情書,或許還需要一個吻印,那麼就可以寫一個吻印的擴充類:
<a href="https://s2.51cto.com/oss/201710/27/b1315ed96fc72bced06729f4ee006a9e.png" target="_blank"></a>
既然有吻印,自然得再加上幾個愛心桃,來給對方表達愛慕,那麼就再寫一個愛心的擴充類:
<a href="https://s4.51cto.com/oss/201710/27/25c3787aceaf2f40c272686d3f713dd0.png" target="_blank"></a>
完成後就可以在測試類裡進行測試檢視效果:
<a href="https://s4.51cto.com/oss/201710/27/13ff3566d8991880efb23a58821cf0e2.png" target="_blank"></a>
<a href="https://s1.51cto.com/oss/201710/27/813bde370d917577319fc111785b7066.png" target="_blank"></a>
本文轉自 ZeroOne01 51CTO部落格,原文連結:http://blog.51cto.com/zero01/1976621,如需轉載請自行聯系原作者