Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
接口和实现设计结构? 我对C++中的大型程序设计很陌生。我正在编写一系列操作,每个操作都有自己的类,这些类将由ProcessMgr类调用_C++_Design Patterns_Inner Classes - Fatal编程技术网

接口和实现设计结构? 我对C++中的大型程序设计很陌生。我正在编写一系列操作,每个操作都有自己的类,这些类将由ProcessMgr类调用

接口和实现设计结构? 我对C++中的大型程序设计很陌生。我正在编写一系列操作,每个操作都有自己的类,这些类将由ProcessMgr类调用,c++,design-patterns,inner-classes,C++,Design Patterns,Inner Classes,我使用ProcessMgr作为接口类,可以从中调用每个操作: class ProcessMgr { private: class OperationOne; class OperationTwo; class OperationThree; } class ProcessMgr::OperationOne { public: ... }; class ProcessMgr::OperationTwo { public: ... }; class Proces

我使用
ProcessMgr
作为接口类,可以从中调用每个操作:

class ProcessMgr
{
 private:
   class OperationOne;
   class OperationTwo;
   class OperationThree;
}

class ProcessMgr::OperationOne 
{
 public:
   ...
};
class ProcessMgr::OperationTwo
{
 public:
  ...
};
class ProcessMgr::OperationThree
{
 public:
  ...
};
这使我能够控制对
操作
类的访问类型,因此不会公开它们的大部分底层代码

重要的是,此代码的用户只能以特定方式与
操作
类交互,而不能完全访问
操作
类的所有内容。

我的问题是:

1) 这是设计大型程序的好方法吗?大多数库(如CURL)都是这样构造的吗

2) 是否有更好/更有效的方法来分离接口和实现

> P> C++中的正常接口(或其他OOP语言)提供了定义。“操作类”必须从接口派生,以便将实现与客户端分离。这一原则被称为

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() {  ...  }
}

倾角是一系列非常好的原理中的一个原理,称为。要设计大型项目,还有很多事情要做和学习。但是,实体原理是了解如何设计软件应用程序的好开端。

任何程序的总体设计都取决于许多变量,但是如果您描述CudioC++程序员的目的,但如果4个类可以具有相同的名称,那么我认为帮助您理解最佳设计将更容易。这是C++的东西吗?它完全把我甩了..更新的问题@Zivs这个问题不更适合我吗?