c++ - 什么是内部状态?

标签 c++ oop

人们一直在谈论的“内部状态”到底是什么?这个词真的让我很恼火。互联网还无法为我提供定义。

最佳答案

来自 Object-Oriented Analysis and Design with Applications

The state of an object encompasses all of the (usually static) properties of the object plus the current (usually dynamic) values of each of these properties

在面向对象编程中,对象可以具有状态(数据)和行为(功能)。

行为指定对象可以做什么,并且通常以其状态为条件。

状态可以由任何成员或静态变量表示,这将取决于对象所属类的定义。

更新:内部状态是指那些影响对象行为但对外界不可见的私有(private)变量。

例如,假设您有一个具有以下接口(interface)的 HTTP 客户端:

class HttpClient {
public:
  HttpClient(std::string host);
  HttpResponse get(std::string path);
  HttpResponse post(std::string path);
};

此对象可能有 host 的 getter,但没有当前连接状态的 getter。

一个好的优化可能是在请求之间保持连接(假设服务器允许),所以在第一次调用 getpost 时,对象将具有建立连接并将套接字描述保存在一些不暴露给用户的内部变量中。下次调用 getpost 时,连接已经建立(用户不知道)。

在这种情况下,连接是对象内部状态的一部分。

关于c++ - 什么是内部状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21345975/

相关文章:

c++ 模板参数匹配 std::function 与函数指针

c++ - 如何将 C++ MySQL 连接器库链接到 Cmake?

c++ - 动态调度 OOP

c++ - “myV”没有命名类型

java - 并发修改异常;无法修复

java - Java 中的字符串数组对象

c++ - c++中代理模式的问题

c++ - OpenCV C API 不允许相机释放和重新打开

matlab - Matlab GUI 代码后面的全局(共享)变量。有没有比使用 handles 结构更好的方法呢?

oop - UML用例 "extends"和继承之间有什么区别吗?