设计模式--桥接模式

定义:

将抽象部分与它的实现部分分离,使它们能够独立的变化.

关键词:

bridge

结构图:

image

应用场景:

实现系统可能有多角度分类,而且每一种分类都有变化时,那么把这种多角度分离出来,就可以让他们独立变化,减少它们之间的耦合.

例子:

类图:

image

代码:
public class Tel
{
    protected string name;
    protected Game game;
    public Tel(string name, Game game)
	{
        this.name = name;
        this.game = game;
	}

    public void SetGame(Game game)
    {
        this.game = game;
    }

    public void Run()
    {
        HttpContext.Current.Response.Write(name+"-");
        game.Run();
    }
}

public class TelM : Tel
{
    public TelM(string name, Game game)
        : base(name, game)
    {
        
    }
}

public class TelN : Tel
{
    public TelN(string name, Game game)
        : base(name, game)
    {

    }
}

public abstract class Game
{
    public abstract void Run();
}

public class Game1 : Game
{
    public override void Run()
    {
        HttpContext.Current.Response.Write("魂斗罗 is Runing!<br/>");
    }
}

public class Game2 : Game
{
    public override void Run()
    {
        HttpContext.Current.Response.Write("坦克 is Runing!<br/>");
    }
}

页面调用:

    protected void Page_Load(object sender, EventArgs e)
    {
        Game g1 = new Game1();
        Game g2 = new Game2();
        Tel t1 = new TelM("苹果", g1);
        Tel t2 = new TelM("诺基亚", g1);
        t1.Run();
        t2.Run();
        
        Response.Write("<hr/>");

        t1.SetGame(g2);
        t2.SetGame(g2);
        t1.Run();
        t2.Run();

    }
效果:
image 
设计原则:
合成/聚合复用原则:尽量使用合成/聚合,而不要使用是使用类继承.
聚合表示一种弱的拥有关系,即:A对象可以包含B对象,但B不是A对象的一部分.
合成表示一种强的拥有关系,即:体现了严格的整体-部分关系,部分和整体的生存周期一致.
posted @ 2009-07-01 10:58  Localhost  阅读(250)  评论(0编辑  收藏  举报