设计模式学习-Bridge(桥接)

    技术2022-05-14  2

     

    意图:将抽象部分和它的实现部分分离,使得它们都可以独立的变化

    适用性:

    不希望抽象和实现部分有一个固定的绑定关系

    类的抽象以及它的实现可以通过生成子类的方法加以扩充

    对一个抽象的实现部分的修改应对客户不产生影响

    你对客户晚产隐藏抽象的实现部分

    示例图:

    示例代码:

    //瓶子装液体,摇晃瓶子,液体跟着荡漾

    //填充液体void CBottle::Fill(CLiquid* pLiquid){    m_pLiquid = pLiquid;}//摇晃瓶子void CBottle::Rock(){    m_pLiquid->Popple();}

    //荡漾 外部只知道是液体荡漾具体什么是什么则分离实现

    //如此利用Bridge完成抽象与实现分离void CLiquid::Popple(void){    if(m_pImp == NULL)    {        m_pImp= GetLiquidImp();    }    m_pImp->Popple();}//得到液体CLiquidImp* CLiquid::GetLiquidImp(void){    //通过一个工厂方法来生成汽油或者水    //Oil     //CImpCreator<COil> impCreate;    //Warter    CImpCreator<CWater> impCreate;    return  impCreate.Create();}

     


    最新回复(0)