You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
(本文主要关注 Relationships)
(想弄清楚这些关系怎样对应到 Go 里)
(!!!我好像还是没有分清楚聚合和组合的区别!!!)
定义关系
继承(Inheritance)
Is-A
子类型继承父类型。
classDiagram
direction LR
subtype --|> supertype : Inheritance
Loading
聚合(Aggregation)
Has-A
一种较弱的联系,两者可以相互独立存在,有各自的生命周期。
classDiagram
direction LR
component --o composite : Aggregation
Loading
组合(Composition)
Contains-A
一种较强的(强于聚合)联系,一方拥有另一方,两者不能独立存在。
classDiagram
direction LR
component --o composite : Composition
Loading
实现(Realization)
classDiagram
direction LR
class stringsReader["*strings.Reader"]
class ioReader["io.Reader"]
<<interface>> ioReader
stringsReader ..|> ioReader : Realization
Loading
依赖(Dependency)
classDiagram
direction LR
A ..> B : Dependency
Loading
联系(Association)
TODO 就是表示有关系吧。
classDiagram
direction LR
A --> B
C -- D
E .. F
Loading
Go 中的关系如何表示
类型实现接口
个人感觉有两种表示方式,继承和实现,但我更偏向实现吧。
classDiagram
direction LR
class stringsReader["*strings.Reader"]
class ioReader["io.Reader"]
<<interface>> ioReader
stringsReader ..|> ioReader : Realization
Loading
classDiagram
direction LR
class stringsReader["*strings.Reader"]
class ioReader["io.Reader"]
<<interface>> ioReader
stringsReader --|> ioReader : Inheritance
Loading
结构体字段
有名字字段和匿名字段(嵌入)先都用组合表示吧。
(可能是没写过真正的 OOP 的原因,我感觉现在无法分辨聚合和组合。)
classDiagram
direction LR
class netIPConn["net.IPConn"]{
- conn
}
class netconn["net.conn"]{
- fd *netFD
}
class netnetFD["net.netFD"]{
- pfd poll.FD
- family int
- sotype int
- isConnected bool
- net string
- laddr Addr
- raddr Addr
}
netconn --* netIPConn : Composition
netnetFD --* netconn: Composition
(本文主要关注 Relationships)
(想弄清楚这些关系怎样对应到 Go 里)
(!!!我好像还是没有分清楚聚合和组合的区别!!!)
定义关系
继承(Inheritance)
Is-A
子类型继承父类型。
聚合(Aggregation)
Has-A
一种较弱的联系,两者可以相互独立存在,有各自的生命周期。
组合(Composition)
Contains-A
一种较强的(强于聚合)联系,一方拥有另一方,两者不能独立存在。
实现(Realization)
依赖(Dependency)
联系(Association)
TODO 就是表示有关系吧。
Go 中的关系如何表示
类型实现接口
个人感觉有两种表示方式,继承和实现,但我更偏向实现吧。
结构体字段
有名字字段和匿名字段(嵌入)先都用组合表示吧。
(可能是没写过真正的 OOP 的原因,我感觉现在无法分辨聚合和组合。)
参见
The text was updated successfully, but these errors were encountered: