桥接的效果
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#设计模式中的桥接模式一例
桥椄模式主要的意图是"将抽象部分与它的实现部分分离,使它们都可独立的变化"