原创 設計模式(十一)----結構型模式之裝飾者模式

1、概述 我們先來看一個快餐店的例子。 快餐店有炒麪、炒飯這些快餐,可以額外附加雞蛋、火腿、培根這些配菜,當然加配菜需要額外加錢,每個配菜的價錢通常不太一樣,那麼計算總價就會顯得比較麻煩。 使用繼承的方式存在的問題: 擴展性不好 如果

原创 設計模式(十)----結構型模式之適配器模式

1、概述 如果去歐洲國家去旅遊的話,他們的插座如下圖最左邊,是歐洲標準。而我們使用的插頭如下圖最右邊的。因此我們的筆記本電腦,手機在當地不能直接充電。所以就需要一個插座轉換器,轉換器第1面插入當地的插座,第2面供我們充電,這樣使得我們的插頭

原创 設計模式(九)----結構型模式之代理模式

一、結構型模式 結構型模式描述如何將類或對象按某種佈局組成更大的結構。它分爲類結構型模式和對象結構型模式,前者採用繼承機制或者實現機制來組織接口和類,後者釆用組合或聚合來組合對象。 由於組合關係或聚合關係比繼承關係耦合度低,滿足“合成複用原

原创 設計模式(八)----創建型模式之建造者模式與工廠模式區別

1、工廠方法模式VS建造者模式 工廠方法模式注重的是整體對象的創建方式;而建造者模式注重的是部件構建的過程,意在通過一步一步地精確構造創建出一個複雜的對象。 我們舉個簡單例子來說明兩者的差異,如要製造一個超人,如果使用工廠方法模式,直接產生

原创 設計模式(七)----創建型模式之建造者模式

1、概述 將一個複雜對象的構建與表示分離,使得同樣的構建過程可以創建不同的表示。 分離了部件的構造(由Builder來負責)和裝配(由Director負責)。 從而可以構造出複雜的對象。這個模式適用於:某個對象的構建過程複雜的情況。

原创 設計模式(六)----創建型模式之原型模式

1、概述 用一個已經創建的實例作爲原型,通過複製該原型對象來創建一個和原型對象相同的新對象。 2、結構 原型模式包含如下角色: 抽象原型類:規定了具體原型對象必須實現的的 clone() 方法。 具體原型類:實現抽象原型類的 clo

原创 設計模式(五)----創建型模式之工廠模式

1、概述 需求:設計一個咖啡店點餐系統。 設計一個咖啡類(Coffee),並定義其兩個子類(美式咖啡【AmericanCoffee】和拿鐵咖啡【LatteCoffee】);再設計一個咖啡店類(CoffeeStore),咖啡店具有點咖啡的功

原创 設計模式(四)----創建型模式之單例模式(二)

1.1.3 存在的問題 1.1.3.1 問題演示 破壞單例模式: 使上面定義的單例類(Singleton)可以創建多個對象,枚舉方式除外。有兩種方式,分別是序列化和反射。 序列化反序列化 Singleton類: public class

原创 設計模式(三)----創建型模式之單例模式(一)

一、創建型模式 創建型模式的主要關注點是“怎樣創建對象?”,它的主要特點是“將對象的創建與使用分離”。 這樣可以降低系統的耦合度,使用者不需要關注對象的創建細節。 創建型模式分爲: 單例模式 工廠方法模式 抽象工廠模式 原型

原创 設計模式(二)----軟件設計原則

在軟件開發中,爲了提高軟件系統的可維護性和可複用性,增加軟件的可擴展性和靈活性,要儘量根據7條原則來開發程序,從而提高軟件開發效率、節約軟件開發成本和維護成本。 1、單一職責原則 ( 核心:儘量保證類,方法功能的單一性,即使其職責:最小粒

原创 Java開發學習(五十)----MyBatisPlus快速開發之代碼生成器解析

1、代碼生成器原理分析 造句: 我們可以往空白內容進行填詞造句,比如: 在比如: 觀察我們之前寫的代碼,會發現其中也會有很多重複內容,比如: 那我們就想,如果我想做一個Book模塊的開發,是不是隻需要將紅色部分的內容全部更換成Book即可

原创 Java開發學習(四十九)----MyBatisPlus更新語句之樂觀鎖

1、概念 在講解樂觀鎖之前,我們還是先來分析下問題: 業務並發現象帶來的問題:秒殺 假如有100個商品或者票在出售,爲了能保證每個商品或者票只能被一個人購買,如何保證不會出現超買或者重複賣 對於這一類問題,其實有很多的解決方案可以使

原创 Java開發學習(四十七)----MyBatisPlus刪除語句之多記錄操作

1、多記錄操作 先來看下問題: 之前添加了很多商品到購物車,過了幾天發現這些東西又不想要了,該怎麼辦呢? 很簡單刪除掉,但是一個個刪除的話還是比較慢和費事的,所以一般會給用戶一個批量操作,也就是前面有一個複選框,用戶一次可以勾選多個也可以

原创 Java開發學習(四十八)----MyBatisPlus刪除語句之邏輯刪除

1、邏輯刪除 接下來要講解是刪除中比較重要的一個操作,邏輯刪除,先來分析下問題: 這是一個員工和其所籤的合同表,關係是一個員工可以籤多個合同,是一個一(員工)對多(合同)的表 員工ID爲1的張業績,總共簽了三個合同,如果此時他離職

原创 Java開發學習(四十五)----MyBatisPlus查詢語句之映射匹配兼容性

1、映射匹配兼容性 我們已經能從表中查詢出數據,並將數據封裝到模型類中,這整個過程涉及到一張表和一個模型類: 之所以數據能夠成功的從表中獲取並封裝到模型對象中,原因是表的字段列名和模型類的屬性名一樣。那麼問題就來了: 問題1:表字段與編碼