/** * 装饰模式 * * 类似于代理模式 * 与代理的区别: * 1、真实角色持有(?) * 代理:代理角色并不一定需要调用者提供真实角色(调用者不需要持有真实角色) * 装饰:调用者需要持有真实角色,并提供给装饰器 * 2、真实角色控制 * 代理:代理角色返回任意真实角色,甚至不返回真实角色 * 装饰:对传入的真实角色进行装饰,然后将装饰后的角色返回 * * 代理:我通过 代理(代理角色) 买一套精装修的房子 * 装饰:我先买房,再找 人(装饰角色) 给我装修 */ public class DecoratorDemo01 { public static void main(String[] args) { ICar car = new SuperCar(); System.out.println("***********************"); car.move(); System.out.println("***********************"); new FlyCar(car).move(); System.out.println("***********************"); new SwimCar(car).move(); System.out.println("***********************"); new FlyCar(new SwimCar(car)).move(); System.out.println("***********************"); new SwimCar(new FlyCar(car)).move(); System.out.println("***********************"); } } /** * 统一接口 */ interface ICar{ public void move(); } /** * 被装饰对象 */ class SuperCar implements ICar{ @Override public void move() { System.out.println("汽车运行"); } } /** * 一下为装饰器 */ class FlyCar implements ICar{ private ICar car; public FlyCar(ICar car){ this.car = car; } @Override public void move(){ System.out.println("汽车安装了翅膀"); car.move(); } } class SwimCar implements ICar{ private ICar car; public SwimCar(ICar car){ this.car = car; } @Override public void move(){ System.out.println("汽车安装了气垫"); car.move(); } }
运行结果:
*********************** 汽车运行 *********************** 汽车安装了翅膀 汽车运行 *********************** 汽车安装了气垫 汽车运行 *********************** 汽车安装了翅膀 汽车安装了气垫 汽车运行 *********************** 汽车安装了气垫 汽车安装了翅膀 汽车运行 ***********************
相关推荐
《设计模式——Java语言中的应用》是一本专为Java开发者深入理解面向对象设计而编写的经典书籍。...无论是初级开发者还是经验丰富的程序员,都应该不断探索和实践设计模式,以提升自己的专业技能。
《研磨设计模式》难度为初级到中级,适合与所有开发人员、设计人员或者即将成为开发人员的朋友。也可以作为高效学生深入学习设计模式的参考读物! 第1章 设计模式基础 第2章 简单工厂 第3章 外观模式 第4章 ...
《研磨设计模式》难度为初级到中级,适合与所有开发人员、设计人员或者即将成为开发人员的朋友。也可以作为高效学生深入学习设计模式的参考读物! 第1章 设计模式基础 第2章 简单工厂 第3章 外观模式 第4章 ...
《研磨设计模式》难度为初级到中级,适合与所有开发人员、设计人员或者即将成为开发人员的朋友。也可以作为高效学生深入学习设计模式的参考读物! 第1章 设计模式基础 第2章 简单工厂 第3章 外观模式 第4章 ...
《Java设计模式之禅》是一本深入浅出讲解设计模式的书籍,书...综上所述,本书不仅是一本关于设计模式的入门书,也是对设计模式应用的深入探讨,无论是对于初级开发者、高级程序员,还是系统分析师,都能从中获得价值。
《研磨设计模式》难度为初级到中级,适合与所有开发人员、设计人员或者即将成为开发人员的朋友。也可以作为高效学生深入学习设计模式的参考读物! 第1章 设计模式基础 第2章 简单工厂 第3章 外观模式 第4章 ...
- **初级开发者**:可以学习JavaScript的基础知识和一些简单的设计模式。 - **中级开发者**:可以通过学习设计模式进阶,了解更高级的设计模式和技术细节。 - **高级开发者**:可以深入了解设计模式的应用,以及如何...
这23种模式是根据GOF(GoF,Gang of Four)的经典著作《设计模式:可复用面向对象软件的基础》中的分类,包括创建型模式(如工厂模式、抽象工厂模式、单例模式等)、结构型模式(如适配器模式、桥接模式、装饰模式等...
《研磨设计模式》这本书是陈臣和王斌两位作者合作的成果,专注于讲解软件设计中的模式应用。设计模式是软件工程中的一种最佳实践,它总结了在特定上下文中解决问题的常见方法,使得开发者可以复用这些解决方案,提高...
设计模式是软件工程中解决常见问题的模板或通用解决方案,Java设计模式是这些解决方案在Java语言中的具体实现。《java23种设计模式详细讲解》这本书系统地介绍了23种设计模式,并通过具体的例子来阐释每种模式的应用...
### C/C++设计模式基础教程知识点详述 #### 一、设计模式概述 设计模式是一种在软件工程领域中被广泛采用的概念,它旨在提供一种通用的解决方案,用于解决常见的编程问题。通过学习和掌握设计模式,程序员能够编写...
对于不同级别的程序员,设计模式能够提供不同程度的帮助和指导,从初级程序员的基础编程技能提升,到高级程序员的系统设计和架构,再到系统分析师的项目问题解决,设计模式都能发挥关键作用。 在应用设计模式时,...
本文讲述的是软件开发领域内设计模式的概念,以及如何将这些模式应用于Java编程中。设计模式是软件工程中,为了解决特定问题而形成的一种通用、可重复使用的解决方案模板。在软件开发中,设计模式为开发者提供了一套...
《研磨设计模式》难度为初级到中级,适合与所有开发人员、设计人员或者即将成为开发人员的朋友。也可以作为高效学生深入学习设计模式的参考读物! 第1章 设计模式基础 第2章 简单工厂 第3章 外观模式 第4章 ...
这本书可能涵盖单例模式、工厂模式、观察者模式、装饰器模式等,这些都是在大型项目中常见的设计模式。"IT十年经典书系列英文版-Design_Patterns-Elements_of_Reusable_Object-Oriented_Software.pdf"则是经典的...
对于一个Java初级工程师来说,掌握设计模式是提升到高级工程师的关键步骤,因为设计模式能提高代码的可读性、可维护性和可扩展性。 1. **创建型模式**: - **工厂方法**:定义一个用于创建对象的接口,让子类决定...