1.JDBC(JavaDatabase Connectivity)數據庫
JDBC是以統一方式訪問數據庫的API.編程
它提供了獨立於平臺的數據庫訪問,也就是說,有了JDBC API,咱們就沒必要爲訪問Oracle數據庫專門寫一個程序,爲訪問Sybase數據庫又專門寫一個程序等等,只須要用JDBC API寫一個程序就夠了,它能夠向相應數據庫發送SQL調用.JDBC是Java應用程序與各類不一樣數據庫之間進行對話的方法的機制.簡單地說,它作了三件事:與數據庫創建鏈接--發送操做數據庫的語句--處理結果.設計模式
jdbc規範使用到主要涉及的設計模式:橋接模式oracle
橋接模式(Bridge)是一種結構型設計模式。Bridge模式基於類的最小設計原則,經過使用封裝、聚合及繼承等行爲讓不一樣的類承擔不一樣的職責。它的主要特色是把抽象(Abstraction)與行爲實現(Implementation)分離開來,從而能夠保持各部分的獨立性以及應對他們的功能擴展。ide
橋接模式的角色和職責:測試
1.Client 調用端this
這是Bridge模式的調用者。.net
2.抽象類(Abstraction)設計
抽象類接口(接口這貨抽象類)維護隊行爲實現(implementation)的引用。它的角色就是橋接類。繼承
3.Refined Abstraction
這是Abstraction的子類。
4.Implementor
行爲實現類接口(Abstraction接口定義了基於Implementor接口的更高層次的操做)
5.ConcreteImplementor
Implementor的子類
橋接模式的UML圖以下:
示例代碼以下:
首先定義Implementor接口,其中定義了其實現類必需要實現的接口operation()
1 public interface Implementor { 2 public void operation(); 3 }
下面定義Implementor接口的兩個實現類:
1 public class ConcreateImplementorA implements Implementor { 2 @Override 3 public void operation() { 4 System.out.println("this is concreteImplementorA's operation..."); 5 } 6 }
1 public class ConcreateImplementorB implements Implementor { 2 @Override 3 public void operation() { 4 System.out.println("this is concreteImplementorB's operation..."); 5 } 6 }
下面定義橋接類Abstraction,其中有對Implementor接口的引用:
1 public abstract class Abstraction { 2 private Implementor implementor; 3 4 public Implementor getImplementor() { 5 return implementor; 6 } 7 8 public void setImplementor(Implementor implementor) { 9 this.implementor = implementor; 10 } 11 12 protected void operation(){ 13 implementor.operation(); 14 } 15 }
下面是Abstraction類的子類RefinedAbstraction:
1 public class RefinedAbstraction extends Abstraction { 2 @Override 3 protected void operation() { 4 super.getImplementor().operation(); 5 } 6 }
下面給出測試類:
1 public class BridgeTest { 2 public static void main(String[] args) { 3 Abstraction abstraction = new RefinedAbstraction(); 4 5 //調用第一個實現類 6 abstraction.setImplementor(new ConcreateImplementorA()); 7 abstraction.operation(); 8 9 //調用第二個實現類 10 abstraction.setImplementor(new ConcreateImplementorB()); 11 abstraction.operation(); 12 13 } 14 }
運行結果以下:
這樣,經過對Abstraction橋接類的調用,實現了對接口Implementor的實現類ConcreteImplementorA和ConcreteImplementorB的調用。實現了抽象與行爲實現的分離。
總結:
1.橋接模式的優勢
(1)實現了抽象和實現部分的分離
橋接模式分離了抽象部分和實現部分,從而極大的提供了系統的靈活性,讓抽象部分和實現部分獨立開來,分別定義接口,這有助於系統進行分層設計,從而產生更好的結構化系統。對於系統的高層部分,只須要知道抽象部分和實現部分的接口就能夠了。
(2)更好的可擴展性
因爲橋接模式把抽象部分和實現部分分離了,從而分別定義接口,這就使得抽象部分和實現部分能夠分別獨立擴展,而不會相互影響,大大的提供了系統的可擴展性。
(3)可動態的切換實現
因爲橋接模式實現了抽象和實現的分離,因此在實現橋接模式時,就能夠實現動態的選擇和使用具體的實現。
(4)實現細節對客戶端透明,能夠對用戶隱藏實現細節。
2.橋接模式的缺點
(1)橋接模式的引入增長了系統的理解和設計難度,因爲聚合關聯關係創建在抽象層,要求開發者針對抽象進行設計和編程。
(2)橋接模式要求正確識別出系統中兩個獨立變化的維度,所以其使用範圍有必定的侷限性。