天天看點

橋接模式

橋接的效果

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#設計模式中的橋接模式一例

橋椄模式主要的意圖是"将抽象部分與它的實作部分分離,使它們都可獨立的變化" 

上一篇: 享元模式
下一篇: 通路者模式

繼續閱讀