我对在C++中设计大型程序非常陌生。我正在编写一系列操作,每个操作都有自己的类,这些类将由ProcessMgr
类调用。
我使用ProcessMgr
作为一个接口类,可以从它调用每个操作:
class ProcessMgr
{
private:
class OperationOne;
class OperationTwo;
class OperationThree;
}
class ProcessMgr::OperationOne
{
public:
...
};
class ProcessMgr::OperationTwo
{
public:
...
};
class ProcessMgr::OperationThree
{
public:
...
};
这使我能够控制对Operation
类的访问类型,因此不会公开它们的大部分底层代码。
重要的是,此代码的用户只能以特定的方式与Operation
Operations
类交互,而不能完全访问Operations
类的所有内容。
我的问题:
1)这是设计大型程序的好方法吗?大多数库,如CURL,是否都是这样构造的?
( 2)是否有更好/更有效的方法将接口和实现分开?
发布于 2017-01-28 10:40:21
C++ (或其他OOP语言)中的普通接口提供了定义。必须从接口派生“操作类”,以便将实现与客户端分离。这个原则被称为依赖反演原理(DIP)。
DIP中的通用UML-图如下所示:
由于客户端只是熟悉接口,所以可以控制对特定子类的访问。实现可以如下所示:
class ProcessMgr {
virtual void foo() = 0;
virutal void bar() = 0;
}
class Operation1 : public ProcessMgr {
virtual void foo() { ... }
virtual void bar() { ... }
}
class Operation2 : public ProcessMgr {
virtual void foo() { ... }
virtual void bar() { ... }
}
DIP是一系列非常好的原理中的一个原理,称为实心。要设计大项目,还有更多的事情要做和学习。但是,坚实的原则是理解如何设计软件应用程序的良好开端。
https://stackoverflow.com/questions/41909902
复制相似问题