原创 SpringBoot以服務形式啓動,並設置JVM啓動參數

1 概述 SpringBoot使得我們可以快速地上手以及開發Spring項目。我們可以把工程打成一個jar包,然後部署到服務器上(這裏只討論Linux,因爲沒多少人會拿Windows當服務器)。nohup命令可以讓程序作爲後臺進程

原创 設計模式,創建型模式之抽象工廠模式

1 概述 上一篇文章講到了工廠方法模式,它提供了一種在不指定具體實現的情況下,創建類實例的解決方案。那爲什麼還需要抽象工廠模式呢? 2 抽象工廠模式 抽象工廠模式本質上,也是定義一個工廠,用來作爲類創建的入口,擁有工廠方法模式的優

原创 設計模式,行爲模式之訪問者模式

1 概述 訪問者模式(Visitor Pattern)是一種行爲模式,不常用。它可以將作用在對象上的算法邏輯,與對象本身分離開來。 2 訪問者模式 當需要對一組相似類型的對象執行操作時,我們可以將操作邏輯分別維護在每個對象內部,但

原创 設計模式,行爲模式之狀態模式

1 概述 狀態模式(state Pattern)是行爲模式之一,一般用在對象的行爲依賴於內部狀態的場景。 2 狀態模式 考慮一個場景:對象有狀態,而且根據狀態不同,對象的行爲也會不同。對於該情況,最簡單的方式是,對狀態做if-el

原创 設計模式,創建型模式之建造者模式

1 概述 前面我們說了工廠模式和抽象工廠模式,下面來說說建造者模式。 建造者模式也是一種極爲常見的創建型模式,前面提到的兩類工廠模式隱藏了類的屬性與構造細節,而建造者模式通過Builder類,適當地暴露了類的屬性,使得類的創建更具

原创 設計模式,行爲模式之命令模式

1 概述 命令模式(Command Pattern),是將請求封裝成一系列命令對象,以解耦請求發起者和請求接收者的一種行爲模式。 2 命令模式 正常情況下,請求發送者和請求接收者是相互耦合的,發送者直接調用接收者相關的方法,直接交

原创 設計模式,行爲模式之模板方法模式

1 概述 模板方法模式(Template Method Pattern)是一種很常見的行爲模式。在超類/抽象類中創建一個模板方法,方法中定義一個算法步驟或框架,讓子類在不修改主結構的情況下,重寫其中的子步驟。 2 模板方法模式 假

原创 設計模式,行爲模式之策略模式

1 概述 策略模式(Strategy Pattern)是行爲模式的一種,複雜度並不高,當完成某項任務的方式有多種時,可以考慮使用策略模式。 2 策略模式 在策略模式中,我們需要定義一族算法,並將算法放入獨立的類中,每種算法代表完成

原创 設計模式,行爲模式之觀察者模式

1 概述 觀察者模式(observer Pattern),也叫發佈-訂閱模式,是一種很重要的行爲模式,它被廣泛運用在異步編程之中,可以說是異步編程的基礎。 2 觀察者模式 當我們需要關注某個對象的狀態時,可以不斷地輪詢,查看狀態是

原创 設計模式,行爲模式之迭代器

1 概述 迭代器模式(iterator Pattern)是最常見的設計模式之一,一般使用過Java集合的人,都接觸過這種模式。 2 迭代器模式 集合(Collection)是編程中常用的一種類型,它們是存儲元素的容器。集合有多種類

原创 設計模式,結構模式之享元模式

1 概述 享元模式(flyweight Pattern)是通過重用元素來降低內存開銷的一種設計模式。 2 享元模式 所謂享元,意思是共享元素。當程序需要創建大量元素,或創建一些佔用大量內存的元素時,對服務器的內存資源是很大的挑戰。

原创 設計模式,結構模式之裝飾模式

1 概述 裝飾模式(Decorator Pattern),意在不改變原有對象的情況下,改變/增強它的方法。 2 裝飾模式 在不違反開閉原則的前提下,要改變某個對象的行爲,可以使用繼承。然而繼承不適用於類/方法被final修飾的情況

原创 設計模式,結構模式之代理模式

1 概述 代理模式(Proxy Pattern)是Javaer們最熟悉的設計模式之一,大名鼎鼎的AOP就是通過代理模式來實現的。 2 代理模式 現實中,如果要邀請某個明星參加活動,我們不是跟這個明星直接溝通,而是找他的經紀人。因爲

原创 設計模式,結構模式之組合模式

1 概述 組合模式(Composite Pattern),是指把一類有共同抽象的對象組合在一起,形成樹狀結構,來表示部分-整體的關係。 2 組合模式 我們經常會遇到一些對象有相同的行爲,同時對象之間又有層級結構。像這種情況,使用組

原创 設計模式,結構模式之適配器模式

1 概述 適配器模式(adapter pattern),從名字就可以看出,工作模式類似於適配器:將原本不兼容的兩樣事物連接,以協同工作。 2 適配器模式 充電器(電源適配器)是日常生活中常見的例子。大多手機要求輸入電壓是5V,而家