设计模式-装饰者模式

装饰者模式

定义:在不改变原有对象的基础上,将功能附加到对象上

这个其实大家在平时写代码的时候就已经用过了,只是不知道这是一个模式

下面看一个案例

有一个组件的接口,然后我有一个具体的实现类,现在我需要在这个具体实现类的基础上进行功能拓展

组件接口

1
2
3
public interface Component {
void operation();
}

具体接口实现

1
2
3
4
5
6
public class ConcreteComponent implements Component{
@Override
public void operation() {
System.out.println("实现组件功能");
}
}

拓展功能抽象类

1
2
3
4
5
6
7
8
public abstract class EnhanceComponent implements Component{
protected Component component;

public EnhanceComponent(Component component) {
this.component = component;
}

}

具体增强类

1
2
3
4
5
6
7
8
9
10
11
public class ConcreteEnhanceComponent extends EnhanceComponent{
public ConcreteEnhanceComponent(Component component) {
super(component);
}
@Override
public void operation() {
component.operation();
System.out.println("拓展功能一");
}
}

优点:

  1. 不改变原有代码的情况下,对原来的类进行增强
  2. 使用不同的组合可以实现不同的人效果
  3. 符合开闭原则
给作者买杯咖啡吧~~~