Time of Update: 2018-12-05
一、調停者(Mediator)模式的結構調停者模式封裝了一系列對象相互作用的方式,使得這些對象不必互相明顯引用。從而使它們可以較鬆散地耦合。當這些對象中的某些對象之間的相互作用發生改變時,不會立即影響到其他的一些對象之間的相互作用。從而保證這些相互作用可以彼此獨立地變化。在調停者模式中,所有的成員對象都可以協調工作,但是又不直接相互管理。這些對象都與一個處於中心地位的調停者對象發生緊密關係,由這個調停者對象進行協調工作。這個協調者對象叫做調停者(Mediator),而調停者所協調的成員對象稱做
Time of Update: 2018-12-05
一、策略(Strategy)模式的結構圖策略模式的用意是針對一組演算法,將每一個演算法封裝到具有共同介面的獨立的類中,從而使他們可以互相替換,策略模式使得演算法可以在不影響到用戶端的情況下發生變化。其結構圖如下:其中如果所有的具體策略類都有一些共有的行為,應當把這些公有的行為放到共同的抽象策略角色Strategy類裡面。這時候抽象策略角色必須要用java抽象類別實現。二、策略模式在java中的應用 使用原則模式的例子主要在Java.awt和Swing庫中看到。
Time of Update: 2018-12-05
一、建造(Builder)模式結構圖建造者模式將產品的結構和產品的零件建造過程對用戶端隱藏起來,把對建造過程進行指揮的責任和具體建造者零件的責任分割分開,達到責任劃分和封裝的目的。建造模式利用一個導演者對象和具體建造者對象一個一個的建造出所有零件,從而建造出完整的產品對象。結構圖如下:二、建造模式在java中的應用JavaMail中的建造模式JavaMail是一組J2SE的擴充API的一個類庫,設計師可以使用它很容易的開發出功能齊備的用戶端電子郵件軟體。JavaMail中的Message和Mi
Time of Update: 2018-12-05
一、原始 (Prototype)模式結構圖通過給出一個原型對象來指明所要建立的對象的類型,然後用複製這個原型對象的辦法建立出更多的對象。原始模型模式有兩種表現形式:第一種是簡單形式,第二種是登記形式。簡單形式結構圖如下:登記形式:兩種形式比較:如果建立的原型對象數目較少而且比較固定的話,可以採取簡單形式的原始模型模式。如果建立的原型對象數目不固定的話,可以採取登記形式的原型模式。在這種情況下,用戶端並不儲存對原型對象的引用,這個任務被交給管理員對象。 淺複製和深複製淺複製僅僅福之所考慮的對象,
Time of Update: 2018-12-05
一、狀態(State)模式的結構狀態模式允許一個對象在其內部狀態改變的時候改變其行為。狀態模式把所研究的對象的行為封裝在不同的狀態物件裡,每一個狀態物件都屬於一個抽象狀態類的一個子類。狀態模式的意圖是讓一個對象在其內部狀態改變的時候,其行為隨之改變。結構如所示:通過使用多態性原則,可以動態地改變環境類Context的屬性State的內容,使其從指向一個具體狀態類變換到指向另一個具體狀態類,從而使環境類的行為sampleOperation()由不同的具體狀態類來執行。代碼如下://Context
Time of Update: 2018-12-05
一、代理模式的結構代理模式給某一個對象提供一個代理對象,並有代理對象控制對原對象的引用。按照使用目的來劃分有以下幾種:遠程(Remote)代理:為一個位於不同的地址空間的對象提供一個局域代表對象。這個不同的地址空間可以是在本機器中,也可是在另一台機器中。遠程代理又叫做大使。虛擬(Virtual)代理:根據需要建立一個資源消耗較大的對象,使得此對象只在需要時才會被真正建立。Copy-on-Write代理:虛擬代理的一種。把複製(複製)拖延到只有在用戶端需要時,才真正採取行動。保護(Protect
Time of Update: 2018-12-05
一、訪問者(Visitor)模式的結構訪問者模式的目的是封裝一些施加於某種資料結構元素之上的操作。訪問者模式適用於資料結構相對未定的系統,它把資料結構和作用於結構上的操作之間的耦合解脫開,使得操作集合可以相對自由地演化。根據對象的類型而對方法進行的選擇稱為指派(Dispatch)。一個方法所屬的對象叫做方法的接收者,方法的接收者與方法的參量統稱做方法的宗量。根據指派可以基於多少種宗量,可以將物件導向語言劃分為單指派語言和多指派語言。單指派語言根據一個宗量的類型進行對方法的選擇,多指派語言根據多
Time of Update: 2018-12-05
轉自:http://jiangzhengjun.iteye.com/blog/652623數值運算式1. 奇偶判斷不要使用 i % 2 == 1 來判斷是否是奇數,因為i為負奇數時不成立,請使用 i % 2 != 0 來判斷是否是奇數,或使用高效式 (i & 1) != 0來判斷。 2. 小數精確計算Java代碼 System.out.println(2.00 -1.10);//0.8999999999999999 System.out.println(2.00 -1.10);//0
Time of Update: 2018-12-05
一、解譯器(Interpreter)模式的結構解譯器模式可以定義出其文法的一種表示,並同時提供一個解譯器。用戶端可以使用這個解譯器來解釋這個語言中的句子。結構所所示:解譯器不一定要有一個瀏覽器(Parser),但是使用瀏覽器仍然是最常見的建立解譯器的辦法。一個瀏覽器可以從一個檔案或命令列讀入文字性命令,並建立解譯器。二、解譯器模式與其他模式的關係合成模式被解釋的運算式所在的抽象文法樹就是建立在合成模式的基礎上的。終結運算式就是樹分葉節點,非終結運算式就是複合節點。
Time of Update: 2018-12-05
package zhangtingting;public class StackTest {private Object[] stack;//元素個數;private int size;//預設長度為10;public StackTest(){this(10);}//也可以自己設定長度,即容量;public StackTest(int len){stack = new Object[len];}//返回元素個數;public int size(){return
Time of Update: 2018-12-05
package javaTest;//測試類別 public class ProCon{ public static void main(String[] args){ SyncQueue queue = new SyncQueue(); Consumer p = new Consumer(queue); Producer c = new Producer(queue); new Thread(p).start(); new
Time of Update: 2018-12-05
下面是20個非常有用的Java程式片段,希望能對你有用。1. 字串有整型的相互轉換 Java代碼String a = String.valueOf(2); 或者 String a=2+""; //integer to numeric stringint i = Integer.parseInt(a); //numeric string to an int2. 向檔案末尾新增內容 Java代碼BufferedWriter out = null; try { out =
Time of Update: 2018-12-05
轉自:http://www.blogjava.net/xylz/archive/2010/07/05/325274.html前面的章節主要談談原子操作,至於與原子操作一些相關的問題或者說陷阱就放到最後的總結篇來整體說明。從這一章開始花少量的篇幅談談鎖機制。上一個章節中談到了鎖機制,並且針對於原子操作談了一些相關的概念和設計思想。接下來的文章中,儘可能的深入研究鎖機制,並且理解裡面的原理和實際應用場合。儘管synchronized在文法上已經足夠簡單了,在JDK
Time of Update: 2018-12-05
一、模版方法(Template
Time of Update: 2018-12-05
Java是一種可以撰寫跨平台應用軟體的物件導向的程式設計語言,是由Sun Microsystems公司於1995年5月推出的Java程式設計語言和Java平台(即JavaSE, JavaEE, JavaME)的總稱。 Java 程式設計語言的風格十分接近C、C++語言。Java是一個純的物件導向的程式設計語言,它繼承了 C++ 語言物件導向技術的核心,Java捨棄了C ++語言中容易引起錯誤的指標(以引用取代)、運算子多載(operator
Time of Update: 2018-12-05
Java提供了一套機制來動態執行方法和構造方法,以及數組操作等,這套機制就叫——反射。反射機制是如今很多流行架構的實現基礎,其中包括Spring、Hibernate等。原理性的問題不是本文的重點,接下來讓我們在執行個體中學習這套精彩的機制。1. 得到某個對象的屬性public Object getProperty(Object owner, String fieldName) throws Exception { Class ownerClass =
Time of Update: 2018-12-05
首先我們瞭解一下我們要配置的各個變數的含義: bin 可執行檔; lib 是sun官方庫檔案; src.zip 原始碼JAVA_HOME 配置安裝目錄CLASSPATH lib 目錄主要為java 尋找類服務PATH 可執行檔的路徑,lib 目錄可執行檔在所有目錄下都能欲行下面我們講講具體的配置過程:首先開啟我的電腦屬性 如:點擊環境變數:上面的使用者變數只知針對目前使用者的變數!建議修改下邊的系統變數!首先建立 JAVA_HOME 在值裡面寫上你的jdk 的安裝路徑 譬如我jdk
Time of Update: 2018-12-05
原文連結點擊開啟我們知道,在Java中設定變數值的操作,除了long和double類型的變數外都是原子操作,也就是說,對於變數值的簡單讀寫操作沒有必要進行同步。 這在JVM
Time of Update: 2018-12-05
package com.starit.open.main;import java.util.ArrayList;import java.util.List;import java.util.concurrent.Callable;import java.util.concurrent.ExecutionException;import java.util.concurrent.ExecutorService;import
Time of Update: 2018-12-05
點擊此處獲得原英文文檔連結 今天看泛型的時候,瞭解了一下jdk1.5的新特性,自動裝箱和自動拆箱,以下是我對原英文文檔的理解性翻譯。