`
wx1568444409
  • 浏览: 14517 次
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

java学习笔记-设计模式-装饰器模式

 
阅读更多

装饰器模式

装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。

这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。

我们通过下面的实例来演示装饰器模式的用法。其中,我们将把一个形状装饰上不同的颜色,同时又不改变形状类。

介绍

意图:动态地给一个对象添加一些额外的职责。就增加功能来说,装饰器模式相比生成子类更为灵活。

主要解决:一般的,我们为了扩展一个类经常使用继承方式实现,由于继承为类引入静态特征,并且随着扩展功能的增多,子类会很膨胀。

何时使用:在不想增加很多子类的情况下扩展类。

如何解决:将具体功能职责划分,同时继承装饰者模式。

关键代码: 1、Component 类充当抽象角色,不应该具体实现。 2、修饰类引用和继承 Component 类,具体扩展类重写父类方法。

应用实例: 1、孙悟空有 72 变,当他变成"庙宇"后,他的根本还是一只猴子,但是他又有了庙宇的功能。 2、不论一幅画有没有画框都可以挂在墙上,但是通常都是有画框的,并且实际上是画框被挂在墙上。在挂在墙上之前,画可以被蒙上玻璃,装到框子里;这时画、玻璃和画框形成了一个物体。

优点:装饰类和被装饰类可以独立发展,不会相互耦合,装饰模式是继承的一个替代模式,装饰模式可以动态扩展一个实现类的功能。

缺点:多层装饰比较复杂。

使用场景: 1、扩展一个类的功能。 2、动态增加功能,动态撤销。

注意事项:可代替继承。

具体实现流程:

e3fef05af11700f11ddc58e013bde3f999a.jpg

 

具体实现:

以游戏的各个角色为例,如战士(warrior),法师(Mage),坦克(tank),都需要穿戴装备如:衣服(clothes)、鞋子(Shoes)、裤子(pants);

一、新建接口 DecoratorInterface

286b3728ddc2a68ade3844a2b5804cb4450.jpg

二、新建被修饰类Tank实现接口DecoratorInterface

15c7876c385c5d1b70ba6ac71a5fe5531f9.jpg

三、新建抽象装饰类AbstractDecorator实现接口DecoratorInterface

f9bb2110e7e21bb64290df2eed243017589.jpg

四、创建装饰实现类衣服装饰器(ClothesDecorator)

9e47255afda36084c981c145cb44e48882d.jpg

五、测试

确认下是否可以正常运行

3d5f7e04f06876335e84c4aa291ec8abce8.jpg

6683c4e9def991d45e6a22650b91a3d550f.jpg

调用装饰器

0427fb4170c879448a3943220808ac35d77.jpg

6340ddf1d0c6bd6ed4a91cc94dc5c2b6550.jpg

继续完成第二个装饰器ShoesDecorator

b94ca14dc663e74344d9714f816975197f6.jpg

测试一下

fa4aa783ce190a4c1059fc6ecb00f2fd694.jpg

6e1033070d288bc20b14b0705d5956b6843.jpg

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

转载于:https://my.oschina.net/u/3945117/blog/1928387

分享到:
评论

相关推荐

    Java 版设计模式学习笔记-java-design-patterns.zip

    这个“Java版设计模式学习笔记”涵盖了多种设计模式,旨在帮助开发者更好地理解和应用这些模式。让我们深入探讨一下其中可能包含的关键知识点。 一、单例模式 单例模式确保一个类只有一个实例,并提供一个全局访问...

    良葛格 Java 学习笔记-JavaGossip全(v1+v2)

    12. **设计模式**:介绍常见的设计模式,如单例模式、工厂模式、装饰者模式、观察者模式等,并通过实例解析其应用场景。 13. **Spring框架**:概述Spring的核心特性,如依赖注入、AOP(面向切面编程)以及Spring ...

    java学习笔记及设计模式

    Java学习笔记及设计模式是程序员进阶过程中必不可少的资源,涵盖了广泛的Java基础知识和高级概念,同时结合了设计模式这一软件工程的重要组成部分。本资源集合旨在帮助开发者深化对Java语言的理解,提升编程技能,并...

    《java学习》-java学习笔记.zip

    设计模式是解决常见编程问题的模板,Java开发者应该熟悉常见的设计模式,如单例、工厂、观察者、装饰器、适配器等。这些模式能够提高代码的可读性、可维护性和复用性。 6. **概念区别(概念区别.md)**: 这个...

    图解java设计模式_学习笔记_java开发

    这份"图解java设计模式_学习笔记"是针对Java开发者深入理解和应用设计模式的重要资源。在这里,我们将深入探讨Java设计模式的核心概念、分类以及它们在实际开发中的应用。 设计模式分为三大类:创建型、结构型和...

    java-design-patterns:Java 设计模式学习笔记

    Java Design PatternsJava 设计模式学习笔记,简单易懂,每个模式都有相应的代码示列,帮助学习理解。在线阅读地址:设计原则创建型模式作用:将创建与使用代码解耦结构型模式作用:将不同的功能代码解耦桥接模式...

    java学习笔记markdown

    7. **设计模式**:介绍常见的设计模式,如单例、工厂、装饰器、观察者等,帮助提升代码的复用性和可维护性。 8. **反射机制**:探讨Java反射API的使用,包括动态获取类信息、创建对象、调用方法等功能,这对于理解...

    根据《JAVA与设计模式》整理的笔记及示例代码

    这份"根据《JAVA与设计模式》整理的笔记及示例代码"涵盖了Java语言和设计模式的核心概念,旨在帮助开发者理解和应用这些模式。 一、设计模式的基本概念 设计模式是对在特定情境下软件设计问题的解决方案的一种描述...

    计算机后端-Java-图解java设计模式笔记.zip

    本压缩包"计算机后端-Java-图解java设计模式笔记"提供了对Java设计模式的深入理解,通过图形化的方式帮助开发者更好地理解和应用这些模式。 1. **单例模式**:保证一个类只有一个实例,并提供一个全局访问点。常见...

    《java学习》-Java 大数据学习笔记.zip

    Java大数据学习笔记主要涵盖了一系列与Java编程和大数据技术相关的主题,这些主题对于现代软件开发,尤其是数据密集型应用至关重要。以下是对每个主题的详细解释: 1. **SSH**(Secure Shell):SSH是一种网络协议...

    Java学习笔记(整理)

    17. **设计模式**:Java开发者应熟悉一些常见的设计模式,如单例、工厂、观察者、装饰器等,它们是解决常见问题的最佳实践。 这些知识点构成了Java编程的基础,对于初学者来说,理解和掌握它们是至关重要的。通过...

    Java学习笔记(源码)

    12. **设计模式**:笔记可能涵盖了常见的设计模式,如单例、工厂、观察者、装饰器、适配器等,这些都是提高代码质量和可维护性的关键。 13. **JVM原理**:理解Java虚拟机的工作方式,包括类加载、内存管理和垃圾...

    Java最全学习资料+面试题+DOS命令+设计模式+Excel技巧+java学习笔记

    这份压缩包中的资源全面覆盖了Java的学习和应用,包括学习资料、面试题、DOS命令、设计模式以及Excel技巧和Java学习笔记。让我们逐一探讨这些知识点。 1. **Java学习资料**:Java学习资料通常包括基础语法、面向...

    高质量JAVA程序设计-个人学习笔记

    8. **设计模式**:笔记中可能涵盖常见的设计模式,如工厂模式、单例模式、观察者模式、装饰器模式等,这些模式为解决特定问题提供了标准解决方案。 9. **异常性能优化**:学习如何通过优化代码、减少不必要的对象...

    设计模式笔记

    设计模式是软件工程中的一种重要概念,它代表了在特定情境下解决问题的...设计模式笔记中的内容应该涵盖了以上所述的各种模式,通过深入学习和实践,你可以将这些模式应用到实际项目中,提升自己的编程技能和设计能力。

    java设计模式学习笔记,以及各种模式的代码实现

    Java设计模式是软件开发中的重要概念,它是一种在特定情境下解决问题的经验总结,可以提高代码的可读性、可维护性和可复用性。这些模式是面向对象编程中的一种最佳实践,通过标准化的方式处理常见的设计问题。下面...

    个人笔记--JAVA基础

    ### 个人笔记--JAVA基础 #### 一、初识Java **1.1. Java语言是什么** Java是一种广泛使用的高级编程语言,由Sun Microsystems于1995年发布。它被设计为简单、面向对象、分布式、解释型、健壮、安全、与体系结构...

    Android-Java的常见集中设计模式学习笔记

    本学习笔记主要聚焦于Java中的常见设计模式,并将这些概念与Android开发实践相结合。 1. **单例模式**:在Android中,单例模式常用于创建全局唯一的对象,例如应用程序的Application类就是一个典型的单例,它在整个...

    300Java设计模式部分学习笔记

    以下是一些在尚学堂300Java设计模式部分学习笔记中涉及的设计模式的知识点: 创建型模式: 创建型模式主要解决对象创建的问题,确保系统的灵活性和封装创建细节。学习笔记中提到了5种创建型模式: 1. 单例模式...

Global site tag (gtag.js) - Google Analytics