学会了处理项目中那些没有确定方案的东西(使用“策略模式”)

项目中遇到一个问题,有一个文件管理类,但是文件的目录不确定,而其他的文件相关的属性的确定了,如下所示:

class FileMgr

{

public:

//获取可用目录

std::string get_directory ();

//其他属性

.....

}

这个让我头疼的问题让我想到了“把容易变化的和不容易变化的分开处理”,我想到了把目录处理分出去,结构图如下


因为文件管理FileMgr类已经确定了,所以把目录的处理扩展出来,以后需要更改实现的话,直接修改DirectoryMgr就可以了,具体实现如下

class FileMgr

{

public:

FileMgr ()

{

    m_directory_mgr = new DirectoryMgr ();

}

//获取可用目录

std::string get_directory ()

{

    return m_directory_mgr->getDirectory (this);

}

//其他方法

.....

private:

IDirectoryMgr * m_directory_mgr;

//其他属性

}

本实现采用委托的方法,把目录的实现委托给了DirectoryMgr来实现,自己只需要调用接口就可以,这样实现的好处是实现了FileMgr累的封闭,这是一种设计模式的应用,属于”策略模式“

面对一些已经有确定方案的东西,和一些仍然没有确定方案的东西,此方法都可以使用,所以记下来和大家分享


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值