代表团
public class A {
private B b = new B();
public void methodA() {
b.methodB();
}
}
当调用的客户端时,类将调用委托给 的 。A
methodA
A
B
methodB
理由。A 类暴露属于其他位置的行为。这可能发生在单继承语言中,其中类A从一个类继承,但其客户端需要在另一个类中实现的行为。进一步研究。
混合委派
public class A {
private B b = new B();
public void methodA() {
b.methodB( this );
}
}
涉及简单转接的委派和作为继承替代的委派之间的区别在于,被叫方必须接受调用方的参数,例如:
b.methodB( this );
理由。允许类实例使用类中可用的功能,就像类从类继承一样 --但没有继承。进一步研究。B
A
B
A
组成
public class A {
private B b = new B();
public A() {
}
}
一旦不存在对类的特定实例的引用,其类的实例就会被销毁。A
B
理由。允许类以模块化方式定义行为和属性。进一步研究。
集合体
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
理由。允许实例重用对象。进一步研究。
无参考演示
为这些简单模式指定的名称由其引用关系定义。