`
duolaaqian
  • 浏览: 14435 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

[初级]设计模式--装饰模式

阅读更多

 

/**
 * 装饰模式
 * 
 * 类似于代理模式
 * 与代理的区别:
 * 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语言中的应用(pdf)

    《设计模式——Java语言中的应用》是一本专为Java开发者深入理解面向对象设计而编写的经典书籍。...无论是初级开发者还是经验丰富的程序员,都应该不断探索和实践设计模式,以提升自己的专业技能。

    研磨设计模式-part2

    《研磨设计模式》难度为初级到中级,适合与所有开发人员、设计人员或者即将成为开发人员的朋友。也可以作为高效学生深入学习设计模式的参考读物! 第1章 设计模式基础 第2章 简单工厂 第3章 外观模式 第4章 ...

    研磨设计模式-part4

    《研磨设计模式》难度为初级到中级,适合与所有开发人员、设计人员或者即将成为开发人员的朋友。也可以作为高效学生深入学习设计模式的参考读物! 第1章 设计模式基础 第2章 简单工厂 第3章 外观模式 第4章 ...

    研磨设计模式-part3

    《研磨设计模式》难度为初级到中级,适合与所有开发人员、设计人员或者即将成为开发人员的朋友。也可以作为高效学生深入学习设计模式的参考读物! 第1章 设计模式基础 第2章 简单工厂 第3章 外观模式 第4章 ...

    Java设计模式之禅

    《Java设计模式之禅》是一本深入浅出讲解设计模式的书籍,书...综上所述,本书不仅是一本关于设计模式的入门书,也是对设计模式应用的深入探讨,无论是对于初级开发者、高级程序员,还是系统分析师,都能从中获得价值。

    研磨设计模式(完整带书签).part2.pdf

    《研磨设计模式》难度为初级到中级,适合与所有开发人员、设计人员或者即将成为开发人员的朋友。也可以作为高效学生深入学习设计模式的参考读物! 第1章 设计模式基础 第2章 简单工厂 第3章 外观模式 第4章 ...

    JS设计模式与开发实践

    - **初级开发者**:可以学习JavaScript的基础知识和一些简单的设计模式。 - **中级开发者**:可以通过学习设计模式进阶,了解更高级的设计模式和技术细节。 - **高级开发者**:可以深入了解设计模式的应用,以及如何...

    java设计模式的 3本书 1 ppt

    这23种模式是根据GOF(GoF,Gang of Four)的经典著作《设计模式:可复用面向对象软件的基础》中的分类,包括创建型模式(如工厂模式、抽象工厂模式、单例模式等)、结构型模式(如适配器模式、桥接模式、装饰模式等...

    研磨设计模式PDF

    《研磨设计模式》这本书是陈臣和王斌两位作者合作的成果,专注于讲解软件设计中的模式应用。设计模式是软件工程中的一种最佳实践,它总结了在特定上下文中解决问题的常见方法,使得开发者可以复用这些解决方案,提高...

    java23种设计模式详细讲解

    设计模式是软件工程中解决常见问题的模板或通用解决方案,Java设计模式是这些解决方案在Java语言中的具体实现。《java23种设计模式详细讲解》这本书系统地介绍了23种设计模式,并通过具体的例子来阐释每种模式的应用...

    C/C++设计模式基础教程

    ### C/C++设计模式基础教程知识点详述 #### 一、设计模式概述 设计模式是一种在软件工程领域中被广泛采用的概念,它旨在提供一种通用的解决方案,用于解决常见的编程问题。通过学习和掌握设计模式,程序员能够编写...

    java开发设计模式

    对于不同级别的程序员,设计模式能够提供不同程度的帮助和指导,从初级程序员的基础编程技能提升,到高级程序员的系统设计和架构,再到系统分析师的项目问题解决,设计模式都能发挥关键作用。 在应用设计模式时,...

    您的设计模式

    本文讲述的是软件开发领域内设计模式的概念,以及如何将这些模式应用于Java编程中。设计模式是软件工程中,为了解决特定问题而形成的一种通用、可重复使用的解决方案模板。在软件开发中,设计模式为开发者提供了一套...

    研磨设计模式(完整带书签).part1.pdf

    《研磨设计模式》难度为初级到中级,适合与所有开发人员、设计人员或者即将成为开发人员的朋友。也可以作为高效学生深入学习设计模式的参考读物! 第1章 设计模式基础 第2章 简单工厂 第3章 外观模式 第4章 ...

    数据结构与设计模式电子书籍

    这本书可能涵盖单例模式、工厂模式、观察者模式、装饰器模式等,这些都是在大型项目中常见的设计模式。"IT十年经典书系列英文版-Design_Patterns-Elements_of_Reusable_Object-Oriented_Software.pdf"则是经典的...

    Java中23种经典设计模式(附代码)

    对于一个Java初级工程师来说,掌握设计模式是提升到高级工程师的关键步骤,因为设计模式能提高代码的可读性、可维护性和可扩展性。 1. **创建型模式**: - **工厂方法**:定义一个用于创建对象的接口,让子类决定...

Global site tag (gtag.js) - Google Analytics