设计模式---桥接模式

当两个类群组之间,发生“交叉组合汇编”的时候,即其中一个类需要调用另一个类的方法的时候,可以用桥接模式把两个类连接起来,便于替换,修改。

桥接模式非常便于使用,但是不好理解。--核心在于:将抽象和实现分离,使得二者可以独立的变化。

比如我想画一个圆,或者画一个正方形,分别都有两种方法实现:1.OpenGL实现 2.DirectX实现

这是可以把画圆或者画正方形看出 抽象,而把OpenGL、DirectX实现看出具体实现方式。


抽象类代码:

public abstract class IShape
{
    protected RenderEngine m_RenderEngine;

    public void SetRenderEngine(RenderEngine theRenderEngine)
    {
        m_RenderEngine = theRenderEngine;
    }
    public abstract void Draw();
}
public abstract class RenderEngine
{
    public abstract void Render(string objName);

}
实现类代码:
public class DirectX : RenderEngine
{
    public override void Render(string objName)
    {
        Debug.Log("DXRender: " + objName);
    }
}

public class OpenGL : RenderEngine
{
    public override void Render(string objName)
    {
        Debug.Log("OpenGL: " + objName);
    }
}


public class Sphere : IShape
{
    public override void Draw()
    {
        m_RenderEngine.Render("Sphere");
    }
}
public class Cube : IShape
{
    public override void Draw()
    {
        m_RenderEngine.Render("Cube");
    }
}
测试代码:
        Sphere SP = new Sphere();
        SP.SetRenderEngine(new DirectX());
        SP.Draw();

        Cube CP = new Cube();
        CP.SetRenderEngine(new OpenGL());
        CP.Draw();

测试结果: DXRender: Sphere

                   OpenGL: Cube

阅读更多
文章标签: c#
上一篇设计模式---中介者模式
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭