原创 策略模式——爲不同的客戶推薦不同的策略

在小成的工廠擴大生產規模之後,產品的多樣性也提高了,但是產能怎麼分配是要根據需求的,小成的公司經過市場調研之後結合自己廠的生產情況制定了幾個銷售策略,現在小成公司的業務員和客戶談生意的時候都會根據不同的客戶需求來提出不同的銷售策略

原创 簡單工廠模式——把生產方法封裝起來

小成是一個剛畢業的大學生,在學校裏面瞭解比較多注塑行業的知識,知道我們國家注塑行業一直保持高速發展的態勢,需求比較大,加上自己也有創業的雄心壯志,所以畢業出來就和人合夥承包了一家塑料加工廠,做起塑料加工生意來了。   小成的注塑

原创 學習筆記——自定義Button,自帶監聽EditText是否空

前言   最近的項目很多地方都遇到這樣的要求:要求頁面裏面所有的EditText都是有輸入才能讓一個button可以被按下,就像下圖那樣。這個功能實現起來會在Activity佔比較多重複的代碼,可重用性不高。所以,我把要重複用的東

原创 學習筆記——自定義EditText右側帶圖片控件

前言   最近項目做用戶登錄模塊需要一個右邊帶圖片的EditText,圖片可以設置點擊效果,所以就查資料做了一個自定義EditText出來,方便以後複用。 原理   下面是自定義EditText的代碼,具體難點是要實現圖片的點擊監

原创 學習筆記:Dialog重用類

  項目用到Dialog的彈出對話框來選擇參數,要設置大量顯示選擇內容的Dialog,如下圖,點擊文字TextView之後可以彈出一堆選擇項自定義的Dialog一個一個地建立Dialog太麻煩,所以我想要寫一個用於方便的可重用的建

原创 Kotlin作用域函數的使用經驗

前言 Kotlin給我們提供了很多Java沒有的便利,作用域函數(Scope Function)就是Kotlin標準庫裏面的提供的一些讓我們減少重複代碼和提高可讀性的一系列函數。 下面結合我的使用經驗來介紹一下Kotlin的作用域

原创 Kotlin裏的takeIf和takeUnless

介紹 我們使用kotlin的時候,會經常用到一些如let、apply、run這些作用域函數,它能讓我們方便、簡潔地鏈式調用對象的方法,除了這些,Kotlin標準庫還提供了 takeIf 函數和 takeUnless 函數. 這些函

原创 建造者模式——建立流水線

小成的注塑廠生產塑料產品時,往往是要經過一條生產流水線,才把原料加工成產品。小成一想,這不是很符合剛剛看到的建造者模式嗎,於是他啪啪啪就寫下代碼。 介紹   和工廠模式一樣,建造者模式也是一種對象創建型模式,但是建造者模式則是側重

原创 外觀模式——設立辦事處

經過一段時間的努力之後,小成的兩間注塑廠生意終於走上正軌了,但是這樣的代價就是要他每天都在兩間距離並不算近的注塑廠之間跑來跑去,接到一個訂單,跑到A廠去佈置生產工作,又跑去B廠,生產完成了又要去佈置配送任務,然後又接收的工作彙報,

原创 學習筆記:XML與JSON的介紹與對比

  隨着移動互聯網時代的到來,越來越多的App客戶端都需要和網絡服務器或者其他客戶端進行數據傳輸和交互,承擔App與網絡來進行傳輸和存儲數據的格式一般是XML或者JSON。所以我們很有必要了解一下JSON和XML 一、XML介紹

原创 學習筆記:Android裏JSON解析的幾種方法

一、解析方法:  Android解析json有很多種方法,下面介紹三種方法:Android自帶的org.json解析、Gson解析和Jackson解析。 優缺點對比:  Android自帶的方法有點像xml的dom解析,遍歷之後根

原创 單例模式——倉庫只有一個

未使用單例模式:   小成承包了塑料生產廠之後,由於生產規模有限,只有一個倉庫,不過這樣倉庫的商品數量也比較容易管理。小成現在想用代碼來實現倉庫的管理,他先建立倉庫類和工人類,倉庫裏面的quantity表示商品數量,工人有搬運方法

原创 學習筆記——Retrofit2.0的簡單使用

  在Android開發中,我們肯定是會遇到網絡請求的,由於網絡請求操作是一個耗時操作,不能在UI線程裏執行,而且實際開發網絡請求還有很多問題要考慮,你需要自己管理線程切換,需要自己解析讀取數據,解析數據成對象,切換回主線程,回調

原创 代理模式——公司的代言人

靜態代理   隨着業務規模的增大,爲了方便管理兩間工廠,小成和他的合夥人建立了一間公司,把一些不是很重要的生意交給手下業務員代表公司去和其他公司談,如果業務員超常發揮,還可能爲公司談好一筆任務之外的生意。這樣老闆小成就可以輕鬆很多

原创 設計模式筆記系列

備註: 這個系列的筆記是用java語言,在AndroidStudio上寫的,分享在這裏是爲了方便記錄和給大家一些經驗(暫時還沒寫完,只寫了一部分)。 所有設計模式代碼地址:https://github.com/totond/De