桥接模式(Bridge)
GoF: 将抽象与实现分离, 使二者可以独立的变化;
误定义
多数人以为这是"只依赖接口而不依赖实现"原则的另一个解释:
定义一个接口类, 然后实现的部分在子类中完成;
要点
将实现"不同功能"交给"不同子类完成"
也就是利用"继承的方式"来完成不同功能的实现
类图
注意
可见, 每增加一个子类就要增加不同功能数的孙类, 扩充不方便;
真的定义
要点
解除"继承实现"的限制;
类图
代码
public abstract class RenderEngine{...}
public class DirectX : RenderEngine{...}
public class OpenGL : RenderEngine{...}
public abstract class IShape{
protected RenderEngine m_RenderEngine = null;
...
}
public class Sphere : IShape{...}
...