[英]C++ inheritance design
我正在编写用于项目组合管理的C ++。 在这种情况下,某些股票可以来自退休投资组合,而其余股票则在公开市场上。
我的总体计划是将数据归入以下类别。
class Equity { private: std::string name, exchange, symbol };
class EquityHistory : public Equity { private std::list<DateRecord> history };
class YahooDAO {};
class RetirementDAO {};
class Portfolio { private: std::list<EquityHistory> equities; }
在主要或较高级别的类别中,投资组合填充有股票列表。 DAO类提供从Web获取价格历史记录的功能。 我的问题是,如何根据投资交易所将Portfolio类调用正确的DAO类。
您可以将两个数据提供者包装在第三个数据提供者中,该提供者将根据交换进行重定向。
从作品集的角度来看,这种方式都是抽象的,它不知道数据源,而且如果以后您决定更改获取数据的方式,则不必更新Portfolio类。
这里是想法:
class DAO
{
private: YahooDAO* yahoo, RetirementDAO* retirement;
public: DAO()
{
yahoo = new YahooDAO();
retirement = new RetirementDAO();
}
public: std::List<Data> getData(EquityHistory* equity)
{
std::List<Data> data;
if (equity->exchange = "some exchange")
{
data = yahoo->getData(equity);
}
else if (equity->exchange = "another exchange")
{
data = retirement->getData(equity);
}
return data;
}
};
class Portfolio
{
private: std::list<EquityHistory> equities;
private: DAO* dao;
public: Portfolio(DAO* dao)
{
this->dao = dao;
}
public: void loadData()
{
...
std::List<Data> data = dao->getData(equity);
...
}
};
如果需要,可以使用接口IDataSource抽象getData方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.