委托模式(delegation pattern)是
软件设计模式中的一项基本技巧。
在委托模式中,有两个对象参与处理同一个请求,接受请求的对象将请求委托给另一个对象来处理。委托模式是一项基本技巧,许多其他的模式,如
状态模式、
策略模式、
访问者模式本质上是在更特殊的场合采用了委托模式。委托模式使得我们可以用
聚合来替代
继承,它还使我们可以模拟
mixin。
在这个例子里,
类模拟打印机Printer拥有针式打印机RealPrinter的实例,Printer拥有的
方法print()将处理转交给RealPrinter的方法print()。
通过使用
接口,
委托可以做到
类型安全并且更加灵活。在这个例子里,类别C可以委托类别A或类别B,类别C拥有方法使自己可以在类别A或类别B间选择。因为类别A或类别B必须实现接口I规定的方法,所以在这里委托是类型安全的。这个例子显示出委托的缺点是需要更多的代码。