桥接模式的很好实现方式(应用shared_ptr)

本文介绍桥接模式及其在C++中的pimpl惯用法应用,通过实例展示了如何利用boost::shared_ptr来降低类间的耦合度,并减少编译时间,提高程序灵活性。

桥接模式是一种结构型设计模式,它把类的具体实现细节对用户隐藏起来,以达到类之间的最小耦合关系。桥接模式也被称为pimpl惯用法,它可以将头文件的依赖关系降到最小,减少编译时间,而且可以不适用虚函数实现多态。

 

首先声明一个类Sample,它仅向外界暴露了最小的细节,真正的实现在内部类impl。

 

Sample.h

#pragma once
#include <boost/smart_ptr/shared_ptr.hpp>
using boost::shared_ptr;
class Sample
{
private:
    class impl;         // 不完整的内部类声明
    shared_ptr<impl> p; // shared_pte成员变量
public:
    Sample(void);   // 构造函数
    void print();   // 提供给外部的接口
};

在Sample的cpp文件中完整定义impl类和其他功能

 

Sample.cpp

#include "Sample.h"
#include <boost/make_shared.hpp>
#include <iostream>
// 内部类的实现
class Sample::impl
{
public:
    void print();
};
void Sample::impl::print()
{
    std::cout << "impl print" << std::endl;
}
Sample::Sample(void)
{
    // 初始化shared_ptr
    p = boost::make_shared<impl>();
}
void Sample::print()
{
    // 调用pimpl实现print()
    p->print();
}

 

最后是使用方法

Sample s;
s.print();

 

桥接模式非常好用,它可以任意改变具体的实现而外界对此一无所知,也减少了源文件之间的编译依赖,使程序获得了更多的灵活性。而shared_ptr是实现它的最佳工具之一,它解决了指针的共享和引用计数问题。

 

本文参考《Boost程序库完全开发指南》中的内存管理一章

关于pimpl惯用法请参考:http://blog.sina.com.cn/s/blog_48f93b530100n2bc.html

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值