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)作为委托来实现堆栈接口。您可以使用任何适合您的属性从头开始实现堆栈行为,但是通过将其委托给现有类的实例(该类不提供您想要公开的堆栈接口),您可以节省大量的工作—非常好的重用。