基本特徵
1.網橋在數據鏈路層上實現區域網路互連;
2.網橋能夠互連兩個採用不同數據鏈路層協定、不同傳輸介質與不同傳輸速率的網路;
3.網橋以接收、存儲、地址過濾與轉發的方式實現互連的網路之間的通信;
4.網橋需要互連的網路在數據鏈路層以上採用相同的協定;
5.網橋可以分隔兩個網路之間的廣播通信量,有利於改善互連網路的性能與安全性。
控制中心
Adobe Bridge 是Adobe Creative Suite的控制中心。您使用它來組織、瀏覽和尋找所需資源,用於創建供印刷、網站和移動設備使用的內容。
Adobe Bridge使您可以方便地訪問本地 PSD、AI、INDD 和 Adobe PDF 檔案以及其它 Adobe 和非 Adobe 應用程式檔案。您可以將資源按照需要拖移到版面中進行預覽,甚至向其中添加元數據。
Bridge 既可以獨立使用,也可以從 Adobe Photoshop、Adobe Illustrator、Adobe InDesign 和 Adobe GoLive 中使用。
模式
宗旨
將原本緊耦合的兩個類進行脫耦,使他們可以獨立的變化而不互相影響。脫耦就是將強關聯的兩個實體間的關聯降低為弱關聯,經常表現為:將繼承關係轉化為關聯關係。
核心概念
1.抽象層:對實現層的上層處理或者上層調用。
2.實現層:對抽象層的處理或者調用,施以回應。具體實現抽象層的各種方法。
3.脫耦
實際上,Bridge就是通過抽象層與實現層的分離,來實現脫耦的目的的。
結構圖
左邊為抽象層,右邊為實現層。他們之間的“複合”關係即為Bridge。
典型套用
public abstract class Report
{
Reporter reporter;
public Report(Reporter reporter) {
this.reporter = reporter;
}
//抽象類使用橋接對象的方法來實現一個任務
public void addReportItem(Object item){
reporter.addLine(item.toString());
}
public void addReportItems(List items){
Iterator iterator = items.iterator();
while ( iterator.hasNext() )
{
reporter.addLine(iterator.next().toString());
}
}
public String report(){
return reporter.getReport();
}
}
public class StockListReport extends Report{
ArrayList stock=new ArrayList();
public StockListReport(Reporter reporter){
super(reporter);
}
public void addStockItem(StockItem stockItem){
stock.add(stockItem);
addReportItem(stockItem);
}
}
public abstract class Reporter{
String header = "";
String trailer = "";
String report = "";
public abstract void addLine(String line);
public void setHeader(String header){
this.header = header;
}
public void setTrailer(String trailer){
this.trailer = trailer;
}
public String getReport(){
return header+report+trailer;
}
}
public class HTMLReporter extends Reporter{
public HTMLReporter(){
setHeader("\n\n\n");
setTrailer("\n");
}
public void addLine(String line){
report += line + "
\n";
}
}
public class ASCIIReporter extends Reporter{
public void addLine(String line) {
report += line + "\n";
}
}
使用橋樑
1.如果一個系統需要在構件的抽象層和實現層之間增加更多的靈活性,避免在兩個層次之間建立靜態的聯繫。
2.設計要求實現層的任何改變不應當影響客戶端,或者說實現層的改變對客戶端是完全透明的。
3.一個構件有多於一個的抽象層實例和實現層實例,系統需要它們之間進行動態耦合。
4.雖然在系統中使用繼承是沒有問題的,但是由於抽象層和實現層需要獨立變化,設計要求需要獨立管理這兩者。