java 装潢模式 例子
时间: 2024-11-22 14:45:30 浏览: 4
Java观察者模式例子
在Java中,装饰者模式的一个经典例子是使用`java.awt.Component`及其派生类来构建绘图对象。例如,你可以有基本的`JButton`作为基础组件,然后用`AbstractButton`作为装饰器,添加一些额外的功能如鼠标悬停效果或图标显示。
```java
// 基础组件(Component)
public class JButtonBase extends AbstractButton {
public JButtonBase(String text) {
setText(text);
}
}
// 装饰器接口
interface ButtonDecorator {
void decorate(JButtonBase button);
}
// 鼠标悬停效果装饰器
class HoverEffect implements ButtonDecorator {
@Override
public void decorate(JButtonBase button) {
button.addActionListener(e -> button.setBackground(Color.LIGHT_GRAY));
}
}
// 图标装饰器
class IconDecorator implements ButtonDecorator {
private final Image image;
public IconDecorator(Image image) {
this.image = image;
}
@Override
public void decorate(JButtonBase button) {
button.setIcon(new ImageIcon(image));
}
}
// 使用装饰器
public class Main {
public static void main(String[] args) {
JButtonBase button = new JButtonBase("Original");
HoverEffect hover = new HoverEffect();
IconDecorator icon = new IconDecorator(...); // 传入图像
// 先装饰基础组件
hover.decorate(button);
icon.decorate(button);
// 显示结果
JOptionPane.showMessageDialog(null, button, "Button", JOptionPane.PLAIN_MESSAGE);
}
}
```
在这个例子中,`HoverEffect`和`IconDecorator`都实现了`ButtonDecorator`接口,可以根据需要组合和应用到`JButtonBase`上,实现了装饰器模式。
阅读全文