J2EE規範jdbc使用到的設計模式

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)橋接模式要求正確識別出系統中兩個獨立變化的維度,所以其使用範圍有必定的侷限性。

相關文章
相關標籤/搜索