分享程序网
首页
  • java
微服务
微前端
环境搭建
数据库
设计模式
算法
软件
解决问题
链接
首页
  • java
微服务
微前端
环境搭建
数据库
设计模式
算法
软件
解决问题
链接
  • 创建模式

    • 单例模式
    • 工厂方法模式
    • 抽象工厂模式
    • 原型模式
    • 建造者模式
  • 结构模式

    • 适配器模式
    • 桥接模式
    • 组合模式
    • 装饰器模式
    • 门面模式
    • 享元模式
    • 代理模式
  • 行为模式

    • 责任链模式
    • 命令模式
    • 迭代器模式
    • 策略模式
    • 模板方法模式

装饰器模式

装饰模式(Decorator Pattern)是一种比较常见的模式,其定义如下:Attach additional responsibilities to an object dynamically keeping the same interface.Decorators provide a flexible alternative to subclassing for extending functionality.(动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式相比生成子类更为灵活。)

装饰器模式又叫做包装器模式,指在不改变原有对象的基础上,动态的给一个对象添加一些额外的指责。

装饰器模式和代理模式非常相似,可以说,装饰器模式是代理模式的一个特殊应用。先看一下代理模式的代码:


public class ConnectionProxy implements Connection {

    private Connection connection;

    private String ds;

    public ConnectionProxy(Connection connection, String ds) {
        this.connection = connection;
        this.ds = ds;
    }
}

我们可以对数据库连接Connection进行代理使用,就是之后的代码可以不用Connection,用ConnectionProxy进行代替。而装饰器模式如下:

@Data
public class ConnectionProxy {

	private Connection connection;

	private String ds;

	public ConnectionProxy(ConnectionProxy connectionProxy) {
		this.connection = connectionProxy.getConnection();
		this.ds = connectionProxy.getDs();
	}
	
}

至于入参的ConnectionProxy的getConnection()和getDs()实现我们并不用关心,就是用子类的重写方法对该ConnectionProxy进行增强。这就是装饰器模式。

Last Updated:
Contributors: clcheng
Prev
组合模式
Next
门面模式