代表团
public class A {
private B b = new B();
public void methodA() {
b.methodB();
}
}
当客户A
调用methodA
时,类将调用A
委托给B
's 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
被销毁。
基本原理。允许实例重用对象。进一步研究。
没有参考的演示
这些简单模式的名称由它们的引用关系定义。