设计模式-结构型软件设计模式(四)

桥接模式

简介

桥接模式使得系统可以沿着两个或者多个维度进行独立地增加或者变化,而这种变化又不会对现有的类产生影响。桥接模式将一个软件设计的抽象部分与实现部分分离,使它们都可以独立地变化。
设计模式-结构型软件设计模式(四)_第1张图片

(1)abstraction接口:定义抽象部分的接口,维持Implementor对象的一个参考(Reference)。
(2)RefinedAbstraction类:是一个实类,继承或者实现Abstraction。
(3)Implementor接口:定义Implementation类的接口,Implementor接口的结构形式可以不和Abstraction界面严格对应,Implementor接口通常只提供比较原始的功能。Abstraction接口通常提供比较高级的功能。
(4)ConcreteImplementor类:是一个实类,实现Implementor接口。

示例

茶有大杯,小杯的区别,也有红茶和绿茶的区别。这是两个维度的区别。

public interface TeaSize
{
    public abstract float getPrice();
}

public class smallCup implements TeaSize
{
    private TeaKind tk;
    public smallCup(TeaKind value){tk = value;}
    public float getPrice()
    {
        float teaPrice = tk.price();
        return teaPrice;
    }
}

public class bigCup implements TeaSize
{
    private TeaKind tk;
    public bigCup(TeaKind value){tk = value;}
    public float getPrice()
    {
        float teaPrice = 1.5f*tk.price();
        return teaPrice;
    }
}

public interface TeaKind
{
    public abstract float price();
}

public class RedTea implements TeaKind
{
    private final float PRICE = 3.0f;
    public float price(){return PRICE;}
}

public class GreenTea implements TeaKind
{
    private final float PRICE = 2.0f;
    public float price(){return PRICE;}
}

优点

(1)分离接口和实现部分,一个实现不必固定的绑定一个接口,抽象类的实现可以在系统运行时进行配置,一个对象甚至可以在运行时改变它的实现。
(2)提高了可拓展性。可以独立得对Abstraction和Implementor层次结构进行拓展。
(3)实现细节对客户的透明。可以对客户隐藏实现细节。
桥接模式强调有两个以上的维度变化,简化多级继承关系,但同时增加了聚合对象内部方法,因为它不得不多写方法以便包含他的类调用。

你可能感兴趣的:(设计模式,设计模式)