去除internel 访问级别
This commit is contained in:
+20
-8
@@ -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 不应该发展成第二份 Schema;Persistence 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。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user