java中的装饰器模式是什么
一、什么是装饰器模式
装饰器模式(Decorator Pattern)也叫包装模式,是一种结构型设计模式,它可以动态地将责任附加到对象上,提供了比继承更有弹性的替代方案。它通过创建一个包装对象,也就是装饰来包裹真实的对象,从而实现动态地给对象添加额外的职责。
二、装饰器模式的优点
1、装饰器模式可以比继承更灵活的在运行时扩展对象的功能。
2、装饰器模式可以对类的功能进行扩展而又不改变其结构。
3、装饰器模式是继承关系的一种替代方案。
4、装饰器模式可以动态地给一个对象添加额外的职责,而不需要增加子类。
三、Java 中的装饰器模式
Java 中的装饰器模式是通过继承和组合来实现的,它的构建基本上是一个抽象构件(Component),一个装饰抽象类(Decorator),以及一个具体装饰类(ConcreteDecorator)。
下面是一个简单的例子:
public interface Shape {
void draw();
}
public class Rectangle implements Shape {
@Override
public void draw() {
System.out.println("Shape: Rectangle");
}
}
public abstract class ShapeDecorator implements Shape {
protected Shape decoratedShape;
public ShapeDecorator(Shape decoratedShape){
this.decoratedShape = decoratedShape;
}
@Override
public void draw(){
decoratedShape.draw();
}
}
public class RedShapeDecorator extends ShapeDecorator {
public RedShapeDecorator(Shape decoratedShape) {
super(decoratedShape);
}
@Override
public void draw() {
decoratedShape.draw();
setRedBorder(decoratedShape);
}
private void setRedBorder(Shape decoratedShape){
System.out.println("Border Color: Red");
}
}
猜您想看
-
如何做到Windows电脑不自动休眠
在Window...
2023年05月12日 -
如何在Linux中使用scp命令备份文件
Linux中使...
2023年05月05日 -
如何使用幻灯片模式在Edge浏览器中查看视频
如何使用Edg...
2023年05月13日 -
Amundsen中怎么实现数据血缘功能
实现数据血缘功...
2023年07月22日 -
如何解决SpringBoot打包jar运行时提示没有主清单属性问题
问题描述:在使...
2023年07月22日 -
如何在王者荣耀中成为一名顶级的玩家?有哪些技巧可以分享?
如何在王者荣耀...
2023年04月17日