本文最后更新于 115 天前,其中的信息可能已经有所发展或是发生改变。
委托模式(Delegate)
class BarImpl // delegate 代表
class Foo { // delegator 委托者
barImpl
public Bar(){
barImpl.Bar() // delegation 委派
}
}
代理模式(Proxy)
class BarImpl
class Foo {
barImpl
public Bar() {
print("begin bar") // 代理模式可以增加自己的逻辑
barImpl.Bar()
print("end bar")
}
}
代理模式属于一种委托模式,代理模式可以增加自己的逻辑
组合模式(Composition)
class BarImpl
class Foo {
children[]
public Foo() {
children = [new BarImpl()]
}
public Bar() {
for child in children {
child.Bar()
}
}
}
组合模式包含了多个委托代表,是 has many 的关系。组合模式下通常父对象拥有子对象的所有权,由父对象来控制子对象的生命周期。