Java 授权在这里是如何应用的?

Java 授权在这里是如何应用的?,java,algorithm,analysis,Java,Algorithm,Analysis,有人能解释一下委托模式是如何应用于以下代码的吗? 我知道它允许对象组合实现与继承相同的代码重用,但我很难理解代码示例 brightness_4 // Java program to illustrate // delegation class RealPrinter { // the "delegate" void print() { System.out.println("The Delegate&quo

有人能解释一下委托模式是如何应用于以下代码的吗? 我知道它允许对象组合实现与继承相同的代码重用,但我很难理解代码示例

    brightness_4
// Java program to illustrate 
// delegation 
class RealPrinter { 
    // the "delegate" 
    void print() 
    { 
        System.out.println("The Delegate"); 
    } 
} 
  
class Printer { 
    // the "delegator" 
    RealPrinter p = new RealPrinter(); 
  
    // create the delegate 
    void print() 
    { 
        p.print(); // delegation 
    } 
} 
  
public class Tester { 
  
    // To the outside world it looks like Printer actually prints. 
public static void main(String[] args) 
    { 
        Printer printer = new Printer(); 
        printer.print(); 
    } 
} `enter code here`

由于
Stack
类实例化了
ArrayList
类(
list
)中的变量,因此当您调用
list
上的方法时,您将委托给
ArrayList

委托意味着使用另一个类的对象作为代理 实例变量,并将消息转发到实例。


对于
堆栈
类,您正在使用
ArrayList
类中的方法。当其他类使用
堆栈
类时,它们会认为操作是由
堆栈
类处理的。局外人不知道
Stack
类实际上是将指令传递给
ArrayList
类。

我想我应该将其解释为使用现有数据结构(ArrayList)作为委托来实现堆栈接口。您可以使用任何适合您的属性从头开始实现堆栈行为,但是通过将其委托给现有类的实例(该类不提供您想要公开的堆栈接口),您可以节省大量的工作—非常好的重用。