gpt4 book ai didi

java - 显示装饰器模式

转载 作者:行者123 更新时间:2023-12-01 17:37:00 25 4
gpt4 key购买 nike

我正在准备考试,这是旧测试:

给定:

public interface Interface1 {

void method1();

void method2().

}

显示界面的装饰器模式类。

它是什么?有人有任何资源可以让我了解更多相关信息吗?

最佳答案

here 中有一个很好的例子。

您本质上要做的是创建一个简单版本 Interface1,然后通过创建装饰(附加类)向其添加更多功能,但始终确保装饰具有相同的接口(interface),从而允许它们在与任何装饰相同的地方使用未装饰的元素。

从上面的链接中,我已经注释了该示例。

取一个像window这样的简单类,然后用滚动条装饰它:

// the Window interface
interface Window {
public void draw(); // draws the Window
public String getDescription(); // returns a description of the Window
}

// implementation of a simple Window without any scrollbars
class SimpleWindow implements Window {
public void draw() {
// draw window
}

public String getDescription() {
return "simple window";
}
}

这些是装饰器,首先是一个抽象类,其中包含装饰器模式的所有公共(public)代码。 - 请注意,它实现了 Window

// abstract decorator class - note that it implements Window
abstract class WindowDecorator implements Window {
protected Window decoratedWindow; // the Window being decorated

public WindowDecorator (Window decoratedWindow) {
this.decoratedWindow = decoratedWindow;
}
public void draw() {
decoratedWindow.draw();
}
}

现在是一个向窗口添加垂直滚动条的装饰。请注意,它扩展了 WindowDecorator,从而扩展了 Window,从而扩展了接口(interface) Window

// the first concrete decorator which adds vertical scrollbar functionality
class VerticalScrollBarDecorator extends WindowDecorator {
public VerticalScrollBarDecorator (Window decoratedWindow) {
super(decoratedWindow);
}

public void draw() {
decoratedWindow.draw();
drawVerticalScrollBar();
}

private void drawVerticalScrollBar() {
// draw the vertical scrollbar
}

public String getDescription() {
return decoratedWindow.getDescription() + ", including vertical scrollbars";
}
}

Examples of GoF Design Patterns in Java's core libraries具有许多用 Java 实现的其他模式的链接。

关于java - 显示装饰器模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5285194/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com