原创 java多態小實例

/* 多態的小例子: Bicycle、Unicycle、Trcycle均繼承自Cycle。 三個子類都重寫了ride()方法。 測試類CycleTest中goRiding()方法的參數類型爲超類, 這樣既可以接受自己的對象也可以接受子類對

原创 java包括繼承的類的初始化全過程

/*新建兩個類,父類Father和子類Son,爲了觀察實驗效果,各自創建一個printInit()方法,此方法打印信息,並可以返回我們需要的一個初始值。1.首先訪問InitOrder.main()(static方法);2.然後加載Son類

原创 類中成員和方法的初始化順序

/* 類的內部定義的變量其初始化順序取決於定義的順序, 變量總是在任何方法(包括構造器)調用之前得到初始化。 在類C中,無論變量b在構造器C()之前還是之後定義,程序輸出結果總是: A() B() C() */ class A {  A

原创 Redis實現分佈式鎖

實現目標 多個客戶端互斥獲得鎖 避免死鎖 解鎖需要加鎖的客戶端 實現思路 以一個redis key作爲鎖,多個客戶端併發競爭此鎖。如果key不在redis中或已經過期,執行set if not exist嘗試向redis插入k

原创 java23種設計模式--享元模式

定義 享元模式以共享的方式高效地支持大量的細粒度對象。是結構型創建模式。 UML 角色 FlyWeight: 抽象享元接口 ConcreteFlyWeight: 具體享元類,實現了享元類。該類對象在創建時便初始化內蘊狀態。 F

原创 java23種設計模式-組合器模式

定義 將對象組合成樹形結構以表示“部分整體”的層次結構。組合模式使得用戶對單個對象和組合對象的使用具有一致性。–GoF《設計模式》 UML 角色 Component: 組合中的對象聲明接口,在適當的情況下,實現所有類共有接口的

原创 java23種設計模式--橋接模式

定義 1.將抽象部分與實現部分分離,使它們都可以獨立的變化。 2.將抽象和實現放在兩個不同的類層次中,使它們可以獨立地變化。——《Head First 設計模式》 UML 角色 抽象化角色: 抽象了類的基本功能。聚合一個實現

原创 java23種設計模式-門面(外觀)模式

定義 外觀模式爲子系統的一組接口提供一個一致的界面,此模式定義了一個高層接口,這個接口使得這一子系統更加容易使用。 UML 角色 子系統(SubSystem): 表示一個系統的子系統或者模塊 門面(Facade): 客戶端通過

原创 java23種設計模式-代理模式

定義 爲其他對象提供一種代理以控制對這個對象的訪問。在某些情況下,一個對象不適合或者不能直接引用另一個對象,而代理對象可以在客戶端和目標對象之間起到中介的作用。 UML 角色 Target: 被代理類的接口。 TargetIm

原创 java23種設計模式-裝飾者模式

定義 裝飾模式指的是在不必改變原類文件和使用繼承的情況下,動態地擴展一個對象的功能。它是通過創建一個包裝對象,也就是裝飾來包裹真實的對象。 UML 角色 Component: 抽象組件接口 ConcreteComponent:

原创 java23種設計模式-適配器模式

定義 適配器模式是把一個類的接口轉換成客戶所期望的另一種接口,從而使原本不匹配而無法在一起工作的兩個類可以一起工作。 UML 角色 Target: 符合客戶端期望的接口。 Adaptee: 需要被適配的類。此類包含了客戶端想要

原创 java23種設計模式-解釋器模式

定義 給定一個語言,定義它的文法表示,並定義一個解釋器,這個解釋器使用該標識來解釋語言中的句子 UML 角色 抽象表達式(Expression):聲明一個所有的具體表達式角色都需要實現的抽象接口。該接口提供一個interpr

原创 java23種設計模式-中介者模式

定義 用一箇中介對象來封裝一系列的對象交互,中介者使各對象不需要顯式地相互引用,從而使其耦合鬆散,而且可以獨立地改變它們之間的交互。 角色 Colleague:是一個抽象類或者接口,提供和其他Colleague通訊的方法 not

原创 java23種設計模式—命令模式

在軟件系統中,“行爲請求者”與“行爲實現者”通常呈現一種“緊耦合”。但在某些場合,比如要對行爲進行“記錄、撤銷/重做、事務”等處理,這種無法抵禦變化的緊耦合是不合適的。在這種情況下,如何將“行爲請求者”與“行爲實現者”解耦?將一組行爲

原创 java23種設計模式-訪問者模式

定義 封裝一些作用於某種數據結構中各元素的操作,它可以在不改變這個數據結構的前提下定義作用於這些元素的新的操作。 UML 角色 Visitor : 抽象訪問者接口 Element : 被訪問元素接口 ElementA,Elem