代表团
public class A {
private B b = new B();
public void methodA() {
b.methodB();
}
}
当A 的客户调用methodA 时,A 类委托调用B 的methodB。
基本原理。 A 类公开了属于其他地方的行为。这可能发生在单继承语言中,其中类 A 继承自一个类,但其客户端需要在不同类中实现的行为。 Further study.
混合委派
public class A {
private B b = new B();
public void methodA() {
b.methodB( this );
}
}
涉及简单转发的委托和替代继承的委托的区别在于被调用者必须接受调用者的参数,例如:
b.methodB( this );
基本原理。 允许类B 实例使用类A 提供的功能,就像类B 继承自类A 一样——但没有继承。 Further study.
作曲
public class A {
private B b = new B();
public A() {
}
}
一旦不再存在对类 A 的特定实例的引用,它的类 B 实例就会被销毁。
基本原理。 允许类以模块化方式定义行为和属性。 Further study.
聚合
public class A {
private B b;
public A( B b ) {
this.b = b;
}
}
public class C {
private B b = new B();
public C() {
A a = new A( this.b );
}
}
一旦不再引用类A 的特定实例,它的类B 实例将不会被销毁。在此示例中,A 和 C 都必须在 B 被销毁之前进行垃圾回收。
基本原理。 允许实例重用对象。 Further study.
没有参考的演示
这些简单模式的名称由它们的引用关系定义。