【PHP 設計模式】靜態工廠 Static Factory
靜態工廠 Static Factory靜態工廠,顧名思義就是希望這整個工廠都是屬於靜態屬性的,無論到哪裡都以靜態方法來使用這個工廠,就像是在星期日的早上時,會有個曹賣在你的島上走來走去,但無論曹賣走到哪裡,你都可以跟曹賣買大頭菜。
UML
實作首先我們這次會有兩種大頭菜,一種是新鮮的大頭菜(Turnips),另一種是壞掉的大頭菜(Spoiled Trunips),但因為它們都是大頭菜,所以我們要先寫個大頭菜介面,並解定義大頭菜應該具備哪些條件。
TurnipsContract.php
1234567/** * Interface TurnipsContract. */interface TurnipsContract{ public function calculatePrice(): int;}
然後我們要新增新鮮的大頭菜、壞掉的大頭菜,並且去實作大頭菜介面所定義的條件。
Turnips.php
123456789101112131415161718192021222324252627282930313233343536373839/** * Class ...
【PHP 設計模式】簡單工廠 Simple Factory
簡單工廠 Simple Factory簡單工廠,這是一種我們真的要買大頭菜的模式,你需要建立一個工廠,這個工廠負責生產特定物件,你只需要把材料丟給工廠,工廠就會把商品生產出來給你,你不需要理會工廠都在做些什麼,就有點像是你跟曹賣買大頭菜,你只需要付鈴錢就好,你不需要去理解曹賣到底是怎麼種大頭菜的。
UML
實作在建立大頭菜工廠之前,我們要先定義大頭菜出來,順便寫上一些功能,像是購買大頭菜、計算大頭菜的價格,這樣工廠才會知道自己要生產什麼。
Turnips.php
1234567891011121314151617181920212223242526272829303132333435363738394041/** * Class Turnips. */class Turnips{ /** * @var int */ protected int $price; /** * @var int */ protected int $count; /** * @param int $price * @para ...
【PHP 設計模式】單例模式 Singleton Pattern
單例模式 Singleton Pattern單例模式,整個應用程式只會有一個實體,這個實體不會重複建立,就有點像是整座島上只有一個曹賣,這個曹賣在你這座島的時間,你可以盡量找他買大頭菜,無論你做什麼事情,大頭菜在這段時間內都不會任意更動,你的曹賣是你的曹賣,不會因為你進去博物館逛一圈再出來而改變。
UML
實作我們需要建立一個大頭菜類別,裡面放著一顆大頭菜。
Turnips.php
12345678910/** * Class Turnips. */final class Turnips{ /** * @var Turnips */ protected static $turnips;}
再來我們需要有個方法來獲得這顆大頭菜,並且這顆大頭菜只要被建立過,無論怎麼建立大頭菜,所獲得的物件永遠會是第一顆大頭菜。
Turnips.php
12345678910111213/** * 透過延遲載入的方式來取得大頭菜 * * @return Turnips */public static function getTurnips(): Turni ...
【業配開箱】十銓 T-Force Xtreem ARGB DDR4
你們看,我拿到廠商贊助的記憶體了欸!方方正正的,外觀簡單低調
乾太₍₍ ◝(・◡・)◟ ⁾⁾
乾太₍₍ ◝(・◡・)◟ ⁾⁾
...
淺入淺出 PHP 閉包 Closure
Closure 類別
用於代表 匿名函數 的類別。匿名函數(在 PHP 5.3 中被引入)會產生這個類型的對象。在過去,這個類別被認為是一個實現細節,但現在可以依賴它做一些事情。自 PHP 5.4 起,這個類別帶有一些方法,允許在匿名函數建立後對其進行更多的控制。除了此處列出的方法外,還有一個 __invoke 方法。這是為了與其他實現了 __invoke() 魔術方法的對象保持一致性,但調用匿名函數的過程與它無關。
PHP: Closure - Manual
直接省略前言,畢竟會 Google PHP、Closure、閉包之類的,然後跑來這裏讀文章的人,通常已經知道自己要什麼了,所以我們就直接進入主題吧。
閉包你是 WTF ?如果我們希望有個功能是輸出「Hello $變數」,那我們會很直覺的直接 echo "Hello $變數" 來解決,如果思考到重複使用的話,可能就會把這段獨立出來變成一個方法,直接拿官方文件的範例來講的話,那就會像這樣:
12345678function createGreeter($who) { return funct ...
如何在 Swift 當中透過 String Format 格式來簡單處理數值內容?
在開發應用程式時,我們經常會需要做數值轉換成特定格式,例如將小數點數值取兩位就好,或者整數補 0 到十位數,諸如此類的功能,接下來我們就直接進入實際應用。
實際應用不做任何處理,直接將 Float 數值輸出12345let floatValue: Float! = 1.23456789let formatString: String! = String(format: "%f", floatValue)/** * Output: 1.234568 */
將 Float 數值捨去小數點至二位數12345let floatValue: Float! = 1.23456789let formatString: String! = String(format: "%.2f", floatValue)/** * Output: 1.23 */
將 Int 數值轉為 16 進位12345let hexValue: Int! = 255let formatString: String! = String(format: "%x", he ...
線上 String 字串亂數產生器
/* The switch - the box around the slider */
.switch {
position: relative;
display: inline-block;
width: 60px;
height: 34px;
}
/* Hide default HTML checkbox */
.switch input {
opacity: 0;
width: 0;
height: 0;
}
/* The slider */
.slider {
position: absolute;
cursor: pointer;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: #ccc;
-webkit- ...
線上編碼、解碼器 for Unicode
.container {
margin: 0px auto;
max-width: 800px;
}
textarea {
margin-bottom: 0px !important;
border-radius: 12px;
}
.contact-form button[type="button"] {
display: inline;
padding: 19px 39px 18px 39px;
color: #fff;
font-size: 1.125rem;
width: 49%;
border: 1px solid #ba0009;
border-top-width: 1px;
border-right-width: 1px;
border-bottom-width: 1px;
b ...
線上編碼、解碼器 for URL
.container {
margin: 0px auto;
max-width: 800px;
}
textarea {
margin-bottom: 0px !important;
border-radius: 12px;
}
.contact-form button[type="button"] {
display: inline;
padding: 19px 39px 18px 39px;
color: #fff;
font-size: 1.125rem;
width: 49%;
border: 1px solid #ba0009;
border-top-width: 1px;
border-right-width: 1px;
border-bottom-width: 1px;
b ...
線上編碼、解碼器 for Base64
.container {
margin: 0px auto;
max-width: 800px;
}
textarea {
margin-bottom: 0px !important;
border-radius: 12px;
}
.contact-form button[type="button"] {
display: inline;
padding: 19px 39px 18px 39px;
color: #fff;
font-size: 1.125rem;
width: 49%;
border: 1px solid #ba0009;
border-top-width: 1px;
border-right-width: 1px;
border-bottom-width: 1px;
b ...