橋接的效果
1橋椄模式可以保持用戶端程式的接口不變,而允許讀者修改顯示類或要使用的類.這可以防止重新編譯一系列複雜的使用者接口子產品,而隻需要重新編譯bridge各實際的最終顯示類
2.可以分别擴充實作類和bridage類,二者之間通常不會有互相作用
3.對用戶端很容易隐藏實作細節
public interface bridger {
void adddata(arraylist col);
}
public interface vislist{
//add a line to the display
void addline(product p);
//remove a line from the display
void removeline(int num);
public class listbridge : bridger {
private vislist vis;
//------
public listbridge(vislist v){
vis = v;
}
//-----
public void adddata(arraylist ar) {
for(int i=0; i< ar.count ; i++) {
product p = (product)ar[i];
vis.addline (p);
}
public class productlist : vislist{
private listbox list;
public productlist(listbox lst) {
list = lst;
public void addline(product p) {
list.items.add (p.getname() );
public void removeline(int num) {
if(num >=0 && num < list.items.count ){
list.items.remove (num);
public class gridlist:vislist {
private datagrid grid;
private datatable dtable;
private gridadapter gadapter;
public gridlist(datagrid grd) {
grid = grd;
dtable = new datatable("products");
datacolumn column = new datacolumn("prodname");
dtable.columns.add(column);
column = new datacolumn("qty");
grid.datasource = dtable;
gadapter = new gridadapter (grid);
gadapter.add (p);
public class invoke
{
private void init()
{
products = new arraylist ();
readfile(products); //read in the data file
//create the product list
prodlist = new productlist (lsprod);
//bridge to product vislist
bridger lbr = new listbridge (prodlist);
//put the data into the product list
lbr.adddata (products);
//create the grid vislist
gridlist = new gridlist(grdprod);
//bridge to the grid list
bridger gbr = new listbridge (gridlist);
//put the data into the grid display
gbr.adddata (products);
//-------------------------------
//可排序的橋
public class sortbridge:listbridge {
//-----
public sortbridge(vislist v):base(v){
public override void adddata(arraylist ar) {
int max = ar.count ;
product[] prod = new product[max];
for(int i=0; i< max ; i++) {
prod[i] = (product)ar[i];
for(int i=0; i < max ; i++) {
for (int j=i; j < max; j++) {
if(prod[i].compareto (prod[j])>0) {
product pt = prod[i];
prod[i]= prod[j];
prod[j] = pt;
}
for(int i = 0; i< max; i++) {
vis.addline (prod[i]);
摘抄中文版的c#設計模式中的橋接模式一例
橋椄模式主要的意圖是"将抽象部分與它的實作部分分離,使它們都可獨立的變化"