说说设计模式~装饰器模式(Decorator)

简介:

装饰器模式,也叫又叫装饰者模式,顾名思义,将一个对象进行包裹,包装,让它变成一个比较满意的对象,这种模式在我们平时项目开发中,经常会用到,事实上,它是处理问题的一种技巧,也很好的扩展了程序,让程序代码不那么死板!

何时能用到它?

1. 需要扩展一个类的功能,或给一个类添加附加职责。

2. 需要动态的给一个对象添加功能,这些功能可以再动态的撤销。

3. 需要增加由一些基本功能的排列组合而产生的非常大量的功能,从而使继承关系变的不现实。

4. 当不能采用生成子类的方法进行扩充时。

其中我们认为第四种使用是比较巧妙的,这一讲中,主要是以第四讲为例来说明的

装饰器模式的结构图

装饰器模式实现说明

IAction:装饰器标准接口,所有装饰功能都要实现它

DelegateAction:装饰类,用来实现IAction插口的功能,并对外部提供另一种表现形式

StandardAction:标准实现类,用来实现IAction插口的功能,对外展示也是以IAction接口为准的

Implement:对外公开的调用类,它向外界公开两种接口方法,一是IAction接口标准,一是Action<int>委托标准

装饰器模式的C#实现

#region 装饰模式
    public interface IAction
    {
        void Print(int a);
    }
    sealed class DelegateAction : IAction
    {
        Action<int> _action;
        public DelegateAction(Action<int> action)
        {
            _action = action;

        }
        public void Print(int a)
        {
            _action(a);
        }
    }

    public class standardAction : IAction
    {
        public void Print(int a)
        {
            Console.WriteLine("标准实现装饰器" + a);
        }
    }
    public class Implement
    {
        public void Run(IAction action)
        {
            action.Print(10);
        }

        public void Run(Action<int> action)
        {
            new DelegateAction(action).Print(10);
        }

    }
    #endregion

调用的代码

 Implement implement = new Implement();
 implement.Run((a) => Console.WriteLine(a));//委托Action<int>调用法
 implement.Run(new standardAction());//IAction对象调用法

 本文转自博客园张占岭(仓储大叔)的博客,原文链接:说说设计模式~装饰器模式(Decorator),如需转载请自行联系原博主。

目录
相关文章
|
9月前
|
设计模式 缓存 安全
【设计模式】【结构型模式】装饰者模式(Decorator)
一、入门 什么是装饰者模式? 装饰者模式(Decorator Pattern)是 Java 中常用的结构型设计模式,它能在不修改原有对象结构的前提下,动态地为对象添加额外的职责。 为什么要装饰者模式?
234 8
|
设计模式 XML Java
【设计模式】装饰器模式(定义 | 特点 | Demo入门讲解)
【设计模式】装饰器模式(定义 | 特点 | Demo入门讲解)
156 0
|
11月前
|
设计模式 Java 数据安全/隐私保护
Java 设计模式:装饰者模式(Decorator Pattern)
装饰者模式属于结构型设计模式,允许通过动态包装对象的方式为对象添加新功能,提供比继承更灵活的扩展方式。该模式通过组合替代继承,遵循开闭原则(对扩展开放,对修改关闭)。
|
设计模式 Java
Java一分钟之-设计模式:装饰器模式与代理模式
【5月更文挑战第17天】本文探讨了装饰器模式和代理模式,两者都是在不改变原有对象基础上添加新功能。装饰器模式用于动态扩展对象功能,但过度使用可能导致类数量过多;代理模式用于控制对象访问,可能引入额外性能开销。文中通过 Java 代码示例展示了两种模式的实现。理解并恰当运用这些模式能提升代码的可扩展性和可维护性。
206 1
|
12月前
|
设计模式 中间件 Java
设计模式3:代理、适配器、装饰器模式
代理模式是一种结构型设计模式,通过中间件解耦服务提供者和使用者,使使用者间接访问服务提供者,便于封装和控制。
225 3
|
设计模式 前端开发 JavaScript
前端必须掌握的设计模式——装饰器模式
装饰器模式是一种结构型设计模式,通过创建新类来包装原始对象,实现在不修改原有结构的前提下扩展新行为。其核心在于“组合”思想,使新功能可“即插即拔”。该模式具有解耦性、灵活性和动态性等特点,广泛应用于类的面向对象编程语言中,如JavaScript的注解和TypeScript的写法。示例中,通过装饰器模式为游戏角色动态添加装备,展示了其强大的扩展性和灵活性。
324 16
|
设计模式 Java
Java设计模式-装饰器模式(10)
Java设计模式-装饰器模式(10)
141 2
|
设计模式
设计模式之装饰器 Decorator
设计模式之装饰器 Decorator
164 1
|
设计模式 Java
23种设计模式,装饰器模式的概念优缺点以及JAVA代码举例
【4月更文挑战第5天】装饰器模式(Decorator Pattern)是一种结构型设计模式,它允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式作为现有类的一个包装。
269 6
|
设计模式 缓存 监控
设计模式之装饰器模式
**装饰器模式**是一种设计模式,用于在运行时动态添加或移除对象的功能,保持接口不变,无需修改原始代码。它适用于不修改已有代码而需动态扩展功能的场景。常见应用包括GUI组件增强、Web开发中的函数扩展、缓存与代理、日志记录、数据库连接池和事务管理等。在Java的Web开发中,Spring框架的拦截器(Interceptor)是一个实现示例,用于权限控制等预处理或后处理任务。

热门文章

最新文章