首页 > 其他分享 >10.16

10.16

时间:2024-11-20 10:09:27浏览次数:1  
标签:component void Component operation public Decorator 10.16

装饰器模式

下面是一个简单的Java代码示例,展示了装饰器模式的实现

// 抽象组件接口
interface Component {
    void operation();
}

// 具体组件类
class ConcreteComponent implements Component {
    @Override
    public void operation() {
        System.out.println("ConcreteComponent operation");
    }
}

// 抽象装饰器类
abstract class Decorator implements Component {
    protected Component component;

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

    @Override
    public void operation() {
        component.operation();
    }
}

// 具体装饰器类A
class ConcreteDecoratorA extends Decorator {
    public ConcreteDecoratorA(Component component) {
        super(component);
    }

    @Override
    public void operation() {
        super.operation();
        addBehavior();
    }

    private void addBehavior() {
        System.out.println("ConcreteDecoratorA add behavior");
    }
}

// 具体装饰器类B
class ConcreteDecoratorB extends Decorator {
    public ConcreteDecoratorB(Component component) {
        super(component);
    }

    @Override
    public void operation() {
        super.operation();
        addBehavior();
    }

    private void addBehavior() {
        System.out.println("ConcreteDecoratorB add behavior");
    }
}

// 客户端代码
public class DecoratorPatternExample {
    public static void main(String[] args) {
        // 创建具体组件对象
        Component component = new ConcreteComponent();

        // 创建具体装饰器对象,并传入具体组件对象
        Decorator decoratorA = new ConcreteDecoratorA(component);
        Decorator decoratorB = new ConcreteDecoratorB(decoratorA);

        // 调用装饰器对象的方法
        decoratorB.operation();
    }
}

标签:component,void,Component,operation,public,Decorator,10.16
From: https://www.cnblogs.com/luoqingci/p/18556260

相关文章

  • 2022.10.16
    练习情况P5058[ZJOI2004]嗅探器割点,从\(a\)开始\(Tarjan\)。对于割点\(u\)若\(b\)在\(u\)的子树中那么\(u\)为符合条件的割点。Code:P5058P3225[HNOI2012]矿场搭建SP16185BUSINESS-MiningyourownbusinessUVA1108MiningYourOwnBusiness求出点双......
  • 10.16考试总结
    T1最小生成树题面:给你一个无向带权连通图,每条边是黑色或白色。让你求一棵恰好有\(need\)条白色边的权值和最小的生成树。题目保证有解。题解:最小生成树,自然而然想到kruskal算法,但我们要让白点恰好有\(need\)条,在白点多的时候,要多选黑点,在白点少的时候,要多选白点,所以我们......
  • 10.16 CW 模拟赛 D. 迷宫(maze)
    题面传统T4找不到原题挂个pdf题面下载算法不容易想到把出发点,有被困同伴的人称作关键点那么只需要求出关键点之间,关键点到任意一个终点的最短距离,然后在搜索即可求解dijkstra算法求单源最短路\(n>10^3\),显然会T飞dijkstra算法求单源最短路\(\mathcal{O......
  • 10.16日
    xmlmysqlmysql-connector-java8.0.33连接到MySQL数据库并执行简单的查询。javaimportjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.ResultSet;importjava.sql.Statement;importjava.sql.SQLException;publicclassDatabaseConnection{......
  • java学习10.16
    继续java图形化页面的学习,今天学的是页面的分区和布局importjava.awt.*;publicclass_1016{publicstaticvoidmain(String[]args){Frameframe=newFrame();frame.setBounds(500,500,300,300);frame.setAlwaysOnTop(true);//边界布局//BorderLay......
  • 10.16随笔
    这里是10.16随笔。今天我在数据结构上学习了有关二叉树的知识,同时将pta上的作业写了一点。作为记录,我把代码复制了过来:输入一个字符串,判断该字符串是否为回文。回文就是字符串中心对称,从左向右读和从右向左读的内容是一样的。(不含空格)输入格式:先输入字符串的长度,不超过100......
  • 10.16 总结
    T1赛时拿的30分暴力,没想到60分,但是预期:30pts,实际:30pts正解把一个人劈成四瓣,然后用树状数组维护不是\(i\)这个人以外的\(0,a_{(i,0)},a_{(i,1)},a_{(i,1)}+a_{(i,0)}\)以上的所有人的个数,最后除以\(16\),就行了。T2赛时时正解,然后因为没有写check然后就小样例......
  • 2024.10.16 近期练习
    CF1442DSum很显然可以设\(f_{i,j}\)表示当前处理了前\(i\)个数组,选了\(j\)个数的最大值,然而转移需要\(O(k)\)。考虑挖掘题目数据元素非降的性质。猜个结论呢?因为元素是逐渐变大的,所以越往后选就一定越优。所以,至多只有一个数组没有被选完。这个很像NF0921D。考虑分治......
  • 2024.10.16 鲜花
    PRAGMATISM-RESURRECTION凭什么没词就不是好歌!!!取模优化就不讲怎么减少取模了。比较广为流传的有两种,Barrettreduction,MontgomeryAlgorithm。对于固定常数模数,计算机已经优化的很好了,一般不会有太大效果(确实有,用Barrettreduction有时可以卡常)。对于输入的固定模数(即......
  • 10.16学习日志
    一.Python函数1.定义一个函数什么是函数函数是可以重复执行的语句块,可以重复调用作用用于封装语句块,提高代码的重用性。函数是面向过程编程的最小单位1.1def语句作用用来定义(创建)函数语法说明函数代码块以def关键词开头,后接函数标识符名称和圆括......