当前位置:首页 > 服务端 > 设计模式 装饰者设计模式

设计模式 装饰者设计模式

2022年09月16日 23:13:23服务端16

设计模式简介

什么是设计模式?
设计模式是可以重复利用的解决方案。软件开发的先驱或者前辈们将之前在开发中遇到的问题进行总结并给出了解决方案,后辈在遇到这些问题之后直接使用这些方案即可解决问题。比如盖高楼,都是先挖地基,然后再盖,如果先盖楼后挖地基,可能盖不了几层,楼就倒了。

装饰者设计模式

使用场景:
给某个对象的功能进行扩展时,可以考虑使用装饰者设计模式。
IO流这部分内容中,JDK的源码使用了大量的装饰者设计模式。比如BufferedReader可以对FileReader进行装饰。
以去拉面馆吃拉面为例,一碗面做好后都会向里面加料装饰,所以先定义一个装饰拉面的接口,提供一个加料的方法

/**
 * 定义一个给面加料的接口
 */
public interface NoodleDecorate {

    void addThings();

}

创建一个拉面(Noodle)类实现NoodleDecorate接口

public class Noodle implements NoodleDecorate {
    /**
     * 向面里加东西
     */
    @Override
    public void addThings() {
        System.out.println("加两片肉末");
        System.out.println("加一片萝卜");
        System.out.println("加三根香菜");
    }
}

普通的拉面做好之后,有人爱吃辣椒,想在拉面中添加辣椒,创建一个辣椒拉面(ChiliNoodle)类

/**
 * 就是在不改变原有拉面的情况下,添加自己想要的调料
 */
public class ChiliNoodle implements NoodleDecorate {

    private Noodle noodle;

    public ChiliNoodle(Noodle noodle) {
        this.noodle = noodle;
    }

    @Override
    public void addThings() {
        noodle.addThings();
        System.out.println("加三勺辣椒");
    }
}

写一个测试类

public class NoodleTest {
    public static void main(String[] args) {
        /**
         * 获取加过辣椒的面
         */
        new ChiliNoodle(new Noodle()).addThings();
    }
}

设计模式  装饰者设计模式 _ JavaClub全栈架构师技术笔记

这样就获得了加过料的拉面了,或者你不想要辣椒,想加鸡蛋的话,也可以自己加,而不用重新做一碗面

(总结)装饰者设计模式的优点:

不用修改被装饰对象的源码,装饰者与被装饰者耦合度不高。

作者:小王同学!
来源链接:https://www.cnblogs.com/xiaowangtongxue/p/10716499.html

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。


本文链接:https://www.javaclub.cn/server/42136.html

标签: 设计模式
分享给朋友:

“设计模式 装饰者设计模式” 的相关文章

什么是设计模式?详解设计模式概念及几大原则

什么是设计模式?详解设计模式概念及几大原则

​ hello,各位小伙伴大家好,又到了一篇一次的斗图环节,天气冷了,各位注意保暖。 今天我们来讲讲设计模式,在我们学习Java的时候,时常听到单例模式,多例模式,还有使用Spring的时候,默认采用的单例模式,你所听到的“饱汉式”、“饿汉式”,都是对设计模式的形容。那么什么是设计模式呢?...

设计模式系列(一)—简单工厂模式

设计模式系列(一)—简单工厂模式

​ hello各位程序员大哥大姐好,上期我讲解了设计模式的概念及分类,学习了UML类图的认识,今天我们就趁热打铁,学习一下简单工厂模式,以后每一个模式会出一篇文章,供各位及我自己查阅学习。斗图还是不能忘的,为了苟且的生活,大家加油,生活不止眼前的苟且,还有远方的苟且。 第一节:简单工...

数据库相关(JDBC,存储过程,以及大文本数据处理,mvc设计模式)

数据库相关(JDBC,存储过程,以及大文本数据处理,mvc设计模式)

目录 1.jdbc总结(模板、八股文): 2.CallableStatement:调用 存储过程、存储函数...

炒冷饭系列:设计模式 工厂方法模式

炒冷饭系列:设计模式 工厂方法模式

炒冷饭系列:设计模式 工厂方法模式 摘要: 摘要: 原创出处: http://www.cnblogs.com/Alandre/ 泥沙砖瓦浆木匠 希望转载,保留摘要,谢谢! 事虽险,吾善为;苟擅为,子道亏。物虽小,勿私藏;苟...

炒冷饭系列:设计模式 建造者模式

炒冷饭系列:设计模式 建造者模式

炒冷饭系列:设计模式 建造者模式 摘要: 原创出处: http://www.cnblogs.com/Alandre/ 泥沙砖瓦浆木匠 希望转载,保留摘要,谢谢! 亲爱我,孝何难;亲恶我,孝方贤。 一、什么是建造者模式...

java多线程12种设计模式

1、Single Threaded Execution Pattern(单线程执行模式) 2、Immutable Pattern(不可变模式) 3、Guarded Suspension Pattern(防卫暂停模式) 4、Balking Pattern(止步模式...

零基础学习设计模式之装饰器模式(配套视频)

零基础学习设计模式之装饰器模式(配套视频)

零基础学习设计模式之装饰器模式 定义 在不改变目标结构的情况下,动态的给对象增加功能 举例 如房子装修、相片加相框等,都是装饰器模式。 基本组件 抽象构件(Compo...

[Java面经]干货整理, Java面试题(覆盖Java基础,Java高级,JavaEE,数据库,设计模式等)

[Java面经]干货整理, Java面试题(覆盖Java基础,Java高级,JavaEE,数据库,设计模式等)

如若转载请注明出处: http://www.cnblogs.com/wang-meng/p/5898837.html   谢谢.上一篇发了一个找工作的面经, 找工作不宜, 希望这一篇的内容能够帮助到大家.对于这次跳槽找工作, 我准备了挺长的时间, 其中也收集了很多比...

Java常见设计模式面试题及答案

Java常见设计模式面试题及答案

文章目录 1.设计模式是什么?你是否在代码中使用过? 2. JDK 中常用的设计模式有哪些? 3.单例模式是什么?请用 Java 写出线程安全的单例模式 4...

单例设计模式线程安全问题

单例设计模式线程安全问题 懒汉式 class Lazy { private Lazy(){ System.out.println("test Lazy"); } private static Lazy lazy=null;...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。