去除internel 访问级别

This commit is contained in:
2026-08-07 17:15:02 +08:00
parent 1ddd2799f2
commit 0c7fac70b2
8 changed files with 270 additions and 159 deletions
+20 -8
View File
@@ -218,23 +218,34 @@ Managed path 会经过 descriptor 和该实例的同步拓扑。
不要假装继承 `Property_Object<T>` 以后 public member 就自动变成强封装属性。如果某个子系统要求受管理同步,那么该子系统自己的编码约束必须要求使用 managed path。
## 11. Capability 是 Schema 的投影视图,不是第二套 Schema
## 11. 固有能力先于边界投影
同一个属性在不同 managed mode 下可以拥有不同可见性
每个 Property 首先拥有 accessor 自身决定的能力
```text
internal
external
persistence
intrinsic
├── read
└── write
```
Core 根据 Attribute 和 accessor 实际读写能力计算这些 capability。
应用内部的普通 managed code 通过 `read()``write()`、lock 和 traversal 直接使用这套固有能力,因此 `internal` 不再是单独的 capability mode
External 和 Persistence 是同一份 Property definition 之上的边界投影:
```text
Property
├── intrinsic: read / write
├── external: read / write projection
└── persistence: load / store projection
```
Core 会把投影 Attribute 与 accessor 的实际能力结合起来。投影可以收窄固有能力,但绝不能凭空创造 accessor 本身不具备的能力。
External view 不应该发展成第二份 SchemaPersistence view 也不应该成为第二份 Schema。它们都只是同一 Schema 的能力投影。
### 原则
**一份 property definition多种 capability projection**
**一份 property definition固有能力明确,边界投影显式**
## 12. Validation = 元数据 + 显式操作
@@ -321,7 +332,8 @@ synchronization(
`Property_Object_Base` 提供 type-erased runtime interface,核心输入包括:
- string key
- `Managed_Access_Mode`
- 不传 mode 时使用 intrinsic access
- 只有选择 `external``persistence` 投影时才使用 `Managed_Access_Mode`
- `std::type_info`
- 显式 result code。