首页 > 其他分享 >装饰器模式

装饰器模式

时间:2023-12-13 14:23:28浏览次数:27  
标签:Component void component 模式 public operation 装饰

装饰器,顾名思义,一个是待装饰者,一个是装饰者,就像我们早餐吃的煎饼,煎饼是待装饰者,其他的火腿、里脊、土豆丝、生菜等都是装饰者,但最终都没有改变这还是一个煎饼。

这里代码上有两个重要的点,一个是装饰者会也会继承或者实现被装饰者,第二是装饰者的构造函数会有一个类型为待装饰者的参数,代码示例如下:

 

package decorator;
public class DecoratorPattern {
    public static void main(String[] args) {
        Component p = new ConcreteComponent();
        p.operation();
        System.out.println("---------------------------------");
        Component d = new ConcreteDecorator(p);
        d.operation();
    }
}
//抽象构件角色
interface Component {
    public void operation();
}
//具体构件角色
class ConcreteComponent implements Component {
    public ConcreteComponent() {
        System.out.println("创建具体构件角色");
    }
    public void operation() {
        System.out.println("调用具体构件角色的方法operation()");
    }
}
//抽象装饰角色
class Decorator implements Component {
    private Component component;
    public Decorator(Component component) {
        this.component = component;
    }
    public void operation() {
        component.operation();
    }
}
//具体装饰角色
class ConcreteDecorator extends Decorator {
    public ConcreteDecorator(Component component) {
        super(component);
    }
    public void operation() {
        super.operation();
        addedFunction();
    }
    public void addedFunction() {
        System.out.println("为具体构件角色增加额外的功能addedFunction()");
    }
}

标签:Component,void,component,模式,public,operation,装饰
From: https://www.cnblogs.com/seeksimple/p/17898944.html

相关文章

  • 掌握建造者模式:构建复杂对象的灵活解决方案
    什么是建造者模式建造者模式是一种创建型设计模式,它提供了一种创建对象的最佳方式。这种模式将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。举一个简单的例子:假设我们要创建一个复杂的对象,例如一辆汽车,它由多个部分组成,包括引擎、车身、轮胎等。如果我们使......
  • 博客园美化:光明/暗黑模式自动切换参考
    我的博客主题是SimpleMemory。浏览器浅色时代码主题xcode,深色时代码主题为hybrid,字体为Consolas。你现在看到的我的博客就是使用了暗黑和光明模式自动切换,会根据浏览器的主题自动识别。自动识别的关键CSS代码为:/*Lightmode*/@media(prefers-color-scheme:light){}/*......
  • 装饰器
    装饰器装饰器的作用就是在不修改被装饰对象源代码和调用方式的前提下为被装饰对象添加额外的功能装饰器经常用于有切面需求的场景插入日志、性能测试、事务处理、缓存、权限校验等应用场景有了装饰器,就可以抽离出大量与函数功能本身无关的雷同代码并继续重用【一】装饰......
  • 《软件需求模式》阅读笔记二
    《软件需求模式》第3、4章阅读笔记其中第3章描述了需求模式扮演的角色,解释了每个模式的一些具体内容和具体结构。而第4章则介绍了何时以及如何去使用需求模式,如何从原有的模式创造出新的模式或者直接编写新的模式。第3章首先为我们解释了需求模式的概念:定义一种特定类型需求的方......
  • STP判断接口工作模式
    目录拓扑配置LSW1LSW2LSW3LSW4工作原理拓扑配置LSW1[Huawei]stpmodestp[Huawei]stppriority0\\将Lsw1的优先级调为0为根桥LSW2[Huawei]stpmodestp[Huawei]stppriority4096\\将Lsw1的优先级调为4096LSW3[Huawei]stpmodestpLSW4[Huawei]stpmodestp工......
  • 设计模式之命令模式
    1.定义将一个请求封装成一个对象,从而允许客户端参数化不同的请求、将请求排队或者记录请求日志、以及支持可撤销的操作2.口语化表述假设某餐厅的工作流程如下:顾客在大堂点餐,服务员记录菜单服务员将菜单送到后厨后厨根据菜单做菜服务员根据菜单送到对应的餐桌在这个场......
  • 装饰器
    装饰器装饰器的作用就是在不修改被装饰对象源代码和调用方式的前提下为被装饰对象添加额外的功能装饰器经常用于有切面需求的场景插入日志、性能测试、事务处理、缓存、权限校验等应用场景有了装饰器,就可以抽离出大量与函数功能本身无关的雷同代码并继续重用【一】装饰......
  • Python实现单例模式的五种写法
    单例模式是一种设计模式,用于确保一个类只有一个实例,并提供全局访问点。在Python中,可以使用多种方法实现单例模式。本文将介绍五种常见的Python单例模式实现方式,包括使用模块、装饰器、基类、元类和线程安全机制。单例模式是一种常见的设计模式,用于确保一个类只有一个实例,并提供全局......
  • [-007-]-Python3+Unittest+Selenium Web UI自动化测试之@property装饰器默认值设置
    看示例:#!/usr/bin/python3#coding:utf-8__author__='csjin'#定义@property装饰器classPPTListModels(object):def__init__(self):self._tab_name="PPT模板"@propertydefhandle(self):returnself.__handle......
  • 策略模式(strategy)
    1#include<iostream>2usingnamespacestd;34//设计思想:我们父类和子类就是一个扩展的关系?是不是合适5//里氏代换原则:子类对象就应该能完全替代父类的行为6//对于继承这样设计,特别小心,我们:组合大于继承7//把quack和fly抽象成为一个对象,那么这个问题......