
Java中装饰器模式的实现(Decorator Pattern)
5星
- 浏览量: 0
- 大小:None
- 文件类型:PDF
简介:
本篇文章主要介绍在Java编程语言中如何使用和实现设计模式中的装饰器模式(Decorator Pattern),通过实例讲解其原理及应用场景。
装饰器模式是结构型设计模式之一,它允许向一个现有的对象添加新的功能而不改变其结构。这种模式创建了一个装饰类来包装原有的类,并在保持类方法签名完整性的前提下提供了额外的功能。在不想增加更多子类的情况下扩展类时,可以使用动态地给一个对象添加一些职责的方式。
基本概念:
* 抽象组件(Component):需要装饰的抽象对象。
* 具体组件(ConcreteComponent):我们需要装饰的对象。
* 抽象装饰类(Decorator):内含指向抽象组件的引用及装饰者共有的方法。
* 具体装饰类(ConcreteDecorator):被装饰的对象。
Java 实现:
* 抽象组件:House
```java
public interface House {
void style();
}
```
* 具体组件:ChineseStyle 和 EuropeanStyle
```java
public class ChineseStyle implements House {
@Override
public void style() {
System.out.println(中式风格装修);
}
}
public class EuropeanStyle implements House {
@Override
public void style() {
System.out.println(欧式风格装修);
}
}
```
* 抽象装饰类:HouseDecorator
```java
public class HouseDecorator implements House {
protected House house;
public HouseDecorator(House house) {
this.house = house;
}
@Override
public void style() {
house.style();
}
}
```
* 具体装饰类:RedDecorator
```java
public class RedDecorator extends HouseDecorator {
public RedDecorator(House house) {
super(house);
}
@Override
public void style() {
this.house.style();
System.out.println(红色装饰墙);
}
}
```
测试装饰器模式:
```java
import org.junit.Test;
public class DecoratorPatternTest {
@Test
public void testDecoratorPattern() {
ChineseStyle chineseStyle = new ChineseStyle();
House redChineseStyle = new RedDecorator(new ChineseStyle());
House redEuropeanStyle = new RedDecorator(new EuropeanStyle());
System.out.println(中式装修);
chineseStyle.style();
System.out.println(红色中式装修);
redChineseStyle.style();
System.out.println(红色欧式装修);
redEuropeanStyle.style();
}
}
```
装饰器模式为我们提供了一种灵活的方式来扩展类的功能,而不需要修改原有的类结构。它广泛应用于软件开发中,例如在 Java 中的输入输出流、Java Servlet API 中的过滤器等。
全部评论 (0)


