天天看点

桥接模式

桥接的效果

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#设计模式中的桥接模式一例

桥椄模式主要的意图是"将抽象部分与它的实现部分分离,使它们都可独立的变化" 

上一篇: 享元模式
下一篇: 访问者模式