23种设计模式之(十)桥接模式(python_c++实现)

23种设计模式之(十)桥接模式(Bridge)

本文主要介绍23种设计模式之组合模式,附详细python/c++示例代码。
- 概念
- 应用场景
- 注意事项
- 代码示例
- 总结
- 代码链接


桥接模式(Bridge)

概念

桥接模式,是构造型的设计模式之一。Bridge模式基于类的最小设计原则,通过使用封装,聚合以及继承等行为来让不同的类承担不同的责任。它的主要特点是把抽象(abstraction)与行为实现(implementation)分离开来,从而可以保持各部分的独立性以及应对它们的功能扩展。

GoF对桥接模式的定义是:将抽象部分与它的实现部分分离,使它们都可以独立地变化。

应用场景

(1)如果一个系统需要在构件的抽象化角色和具体化角色之间增加更多的灵活性,避免在两个层次之间建立静态的继承联系,通过桥接模式可以使它们在抽象层建立一个关联关系。

(2)对于那些不希望使用继承或因为多层次继承导致系统类的个数急剧增加的系统,桥接模式尤为适用。

(3)一个类存在两个独立变化的维度,且这两个维度都需要进行扩展。

代码示例

C++代码示例

/************************************************************************/
/* 设计模式专题
/*
/* 桥接模式
/*
/* Author  : zzl
/*
/* 编程环境: window10 vs2010
/*
/* Date    : 20180916
/************************************************************************/

#include <iostream>

class Engine
{
public:
    virtual void InstallEngine() = 0;
};
class Engine4400cc : public Engine
{
public:
    virtual void InstallEngine()
    {
        printf("i am 4400cc engine ,i am installed successful\n");
    }
};


class Engine4500cc : public Engine
{
public:
    virtual void InstallEngine()
    {
        printf("i am 4500cc engine ,i am installed successful\n");
    }
};


class Car
{
public:
    Car(Engine *engine)
    {
        this->m_engine = engine;
    }
    virtual void installEngine() = 0;

protected:
    Engine *m_engine;
};

class WBM5 : public Car
{
public:
    WBM5(Engine *engine) : Car(engine)
    {
        ;
    }

    virtual void installEngine()
    {
        printf("i am WBM5 \n");
        m_engine->InstallEngine();
    }
};

class WBM6 : public Car
{
public:
    WBM6(Engine *engine) : Car(engine)
    {
        ;
    }

    virtual void installEngine()
    {
        printf("i am WBM6 \n");
        m_engine->InstallEngine();
    }
};

void main()
{
    //
    Engine  *engine = NULL;
    WBM6    *wbm6 = NULL;
    WBM5    *wbm5 = NULL;

    engine = new Engine4400cc;

    wbm6 = new WBM6(engine);
    wbm6->installEngine();

    wbm5 = new WBM5(engine);
    wbm5->installEngine();

    delete wbm6;
    delete wbm5;
    delete engine;



}

python代码示例

# -*- coding: utf-8 -*-
###################################################################
# 设计模式专题
# 
# 桥接模式
# 
# Author  : zzl
# 
# 编程环境: window10 python2.7
# 
# Date    : 20180916
##################################################################

class Engine(object):
    def install_engine(self):
        pass


class Engine4400cc(Engine):
    def install_engine(self):
        print("i am 4400cc engine ,i am installed successful")


class Engine4500cc(Engine):
    def install_engine(self):
        print("i am 4500cc engine ,i am installed successful")


class Car(object):
    def __init__(self):
        self.m_engine = engine

    def install_engine(self):
        pass


class WBM5(Car):
    def __init__(self, engine):
        self.m_engine = engine

    def install_engine(self):
        print("i am WBM5 ")
        self.m_engine.install_engine()


class WBM6(Car):
    def __init__(self, engine):
        self.m_engine = engine

    def install_engine(self):
        print("i am WBM6 ")
        self.m_engine.install_engine()


if __name__ == "__main__":

    engine = Engine4400cc()

    wbm6 = WBM6(engine)
    wbm6.install_engine();

    wbm5 = WBM5(engine);
    wbm5.install_engine()



源码链接

设计模式(十)组合模式示例代码(python–c++)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值