原创 遞歸獲取目錄下的所有文件

package file; import java.io.File; import java.util.ArrayList; import java.util.List; public class ReadHiddenFile {

原创 建造設計模式

  Director     /** * 導演者 */ public class Director { private Builder builder; /** * 產品構造方法,負責調用各個零件的建造

原创 缺省適配器

缺省適配器爲一個接口提供缺省實現,這樣子類可以從這個缺省的實現進行擴展,而不必從原有的接口進行擴展   public interface 和尚 { public void 吃齋(); public void 唸經();

原创 對象適配器(object adapter)

把一個類的接口變成客戶端所期待的另一種接口,從而使原本因接口不匹配而無法在一起工作的兩個類能夠在一起工作   /** * 目標角色 */ public interface Target { public void operat

原创 觀察者模式

觀察者模式定義了一種一對多的依賴關係,讓多個觀察者對象同時監聽某一個主題對象。這個主題對象在狀態上發生變化,會通知所有觀察者對象,使他們能自動更新自己   import java.util.Observable; public clas

原创 同步訪問共享的可變數據(synchronized與volatile關鍵字)

synchronized 關鍵字可以保證同一時刻,只有一個線程可以執行某一個方法,或是某一個代碼塊。 它包含兩個特徵:1、互斥 2、可見。即同步不僅可以阻止一個線程看到對象處於不一致的狀態中,還可以保證進入同步方法或者同步代碼塊的

原创 裝飾器模式

public interface ISource { public void operation(); }   public class Source implements ISource { public v

原创 訪問者模式

訪問者模式的目的是封裝一些施加於某種數據結構元素之上的操作。一旦這些操作需要修改的話,接收這個操作的數據結構則可以保持不變。 訪問者模式的組成結構:   1) 訪問者角色(Visitor):爲該對象結構中具體元素角色聲明一個訪問操作接口

原创 轉:安全合成模式

合成模式把部分和整體的關係用樹結構表示出來。使客戶端把一個個單獨的成分對象和由它們複合而成的合成對象同等看待。   public interface IFile { //返回自己的實例 IFile getComposi

原创 java靜態分派

靜態分派發生在編譯時期,分派根據靜態類型信息發生。方法重載就是靜態分派   public class BlackHorse implements Horse{ }   public class BlackHorse implements

原创 迭代子模式

迭代子模式可以順序地訪問一個聚集中的元素而不必暴露聚集的內部表象,就是爲不同的聚集提供相同的遍歷方式,使得客戶端只需要關注迭代接口,而不需要關注所迭代的聚集的具體結構 聚集和Java聚集多個對象聚在一起形成的總體稱之爲聚集(Aggrega

原创 橋模式

將抽象化與實現化脫耦,使得二者可以獨立變化。該模式的目標是通過把高層的抽象和底層的實現分開,分別構建自己的類層次結構,並通過實現部分的接口將兩部分進行橋接,從而達到高層抽象和底層實現可以獨立的方便擴展的目的。其核心是分離,和委託。   在

原创 狀態設計模式

狀態模式允許一個對象在其內部狀態改變的時候改變其行爲。他把所研究的對象的行爲包裝在不同的狀態對象裏,每一個狀態對象都屬於一個抽象狀態類的一個子類。狀態模式的意圖是讓一個對象在其內部狀態改變的時候,其行爲也隨之改變。 /** * 環境角色

原创 策略模式

策略模式用意是針對一組算法,將每一個算法封裝到具有共同接口的獨立的類中,從而使得他們可以相互替換 一個系統需要動態地在幾種算法中選擇一種。那麼這些算法可以包裝到一個個的具體算法裏面,而這些具體算法類都是一個抽象算法類的子類。就是這些具體算

原创 java socket 編程

import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintStream