interface Component {
/**原始接口*/
public void go();
}
//2. 具体构件
class ConcreteComponent implements Component {
public void go() {
System.out.println("行走");
}
}
//.装饰角色来了
class Decorator implements Component {
/**持有私有的原始构件*/
private Component component;
/**构造子,委派给原始构件*/
protected Decorator(Component component) {
this.component = component;
}
/**调用原始构件功能,通常就可直接把扩展功能加在此方法中*/
public void go() {
this.component.go();
}
}
//具体装饰(这里演示了两种扩展的情况,走路+听音乐和唱歌s)
class ConcreteDecoratorListen extends Decorator {
/**构造子,相关初始化*/
public ConcreteDecoratorListen(Component component) {
super(component);
// code is here
}
/**商业逻辑,对原始构件功能的扩展*/
public void go() {
listen("听音乐");//执行扩展功能
super.go();
}
private void listen(Object obj){
System.out.println(obj);
}
}
class ConcreteDecoratorSing extends Decorator {
/**构造子,相关初始化*/
public ConcreteDecoratorSing(Component component) {
super(component);
// code is here
}
/**商业逻辑,对原始构件功能的扩展*/
public void go() {
super.go();
System.out.println(sing());;// 执行扩展功能
}
private String sing() {
return"唱歌";
}
}
//客户端调用
public class testDecorate {
public static void main(String[] args) {
/**原始构件*/
Component component = new ConcreteComponent();
/**边听音乐,边走路*/
ConcreteDecoratorListen cdl = new ConcreteDecoratorListen(component);
cdl.go();
System.out.println();
/**边走路,边唱歌*/
ConcreteDecoratorSing cds = new ConcreteDecoratorSing(component);
cds.go();
System.out.println();
//走路,唱歌,听音乐
ConcreteDecoratorListen cdl2 = new ConcreteDecoratorListen(component);
ConcreteDecoratorSing cds2 = new ConcreteDecoratorSing(cdl2);
cds2.go();
}
}
- 大小: 39.8 KB
- 大小: 54.5 KB
分享到:
相关推荐
C++23种设计模式之 装饰模式。:当你向旧的类中添加新代码时,一般是为了添加核心职责或主要行为。而当需 要加入的仅仅是一些特定情况下才会执行的特定的功能时(简单点就是不是核心应用的功 能),就会增加类的...
设计模式装饰模式PPT学习教案 本资源摘要信息旨在对设计模式中的装饰模式进行详细的介绍和分析,涵盖了装饰模式的定义、结构、实现、应用实例等方面的内容。 一、装饰模式定义 装饰模式是一种用于替代继承的技术...
软件设计模式之装饰模式讲解ppt,可用于教学课件。
装饰模式是一种结构型设计模式,它允许在运行时向对象添加新的行为或责任,而无需修改对象的源代码。这种模式通常用于保持对象的原始类结构不变,同时增强其功能。HeadFirst 设计模式系列书籍以其生动有趣的插图和...
设计模式是软件工程中的一种重要思想,它是在特定情境下,为解决常见问题而形成的一套最佳实践。在本文中,我们将深入探讨24种设计模式,并结合混合设计模式的概念,以及它们在实际项目中的应用案例。 首先,设计...
这本书通过丰富的图像、故事和幽默的方式,引导读者了解23种经典的GoF(Gang of Four)设计模式,包括单例模式、工厂模式、观察者模式、装饰器模式、适配器模式、代理模式等。书中强调了如何在实际项目中选择和应用...
设计模式 的分类 总体来说设计模式分为三大类: 创建型模式(5): 工厂方法模式 、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式(7): 适配器模式、装饰器模式、代理模式、外观模式、桥接模式、...
装饰模式是一种结构型设计模式,它允许在运行时向对象添加新的行为或责任,而无需修改对象的源代码。这种模式在软件工程中非常常见,因为它提供了灵活性,使得我们可以独立于对象的组合来扩展功能。 在C++中,装饰...
装饰者模式是软件设计模式中的一种结构型模式,它的主要目的是动态地给对象添加新的功能,而无需修改原有代码。在Java中,装饰者模式通常通过继承和组合来实现,它提供了一种比继承更灵活的方式来扩展对象的功能。...
Java 经典设计模式讲解以及项目实战 设计模式简介:主要介绍各种设计模式的概念和运用场景等 设计模式综合运用:主要是笔者在实际工作中运用到的一些设计模式综合运用事例的提炼 Spring设计模式简介:主要是讲述...
GOF(Gang of Four)设计模式,由Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides四位专家在他们的著作《设计模式:可复用面向对象软件的基础》中提出,被誉为设计模式的经典之作。本资源包含了GOF设计...
装饰模式是一种结构型设计模式,它允许我们向一个对象动态地添加新的行为或属性,而无需修改原有对象的代码。这种模式在Java等面向对象语言中广泛应用,因为它提供了对类扩展的一种灵活方式,避免了使用继承带来的...
这个压缩包文件"设计模式(包含5个设计模式)含源代码报告.rar"显然是一份宝贵的资源,它涵盖了五个核心的设计模式,并附带了详细的类图、源代码以及文档报告,这对于学习和理解设计模式至关重要。 首先,我们要探讨...
Spring 设计模式之装饰器模式详解 在软件设计中,经常会遇到需要在不修改原有代码的情况下,添加新的功能或行为。这时,装饰器模式便可以发挥其作用。在 Spring 设计模式中,装饰器模式是非常重要的一种设计模式。 ...
《新版设计模式手册 - C#设计模式(第二版)》是一部深入探讨C#编程中设计模式的权威指南,尤其适合已经有一定C#基础并希望提升软件设计能力的开发者阅读。设计模式是解决软件开发中常见问题的经验总结,是软件工程的...
设计模式07-组合模式、装饰模式 设计模式09-外观模式、享元模式 设计模式10-代理模式、结构型模式大复习 设计模式11-行为模式-责任链、命令模式 设计模式12-解释器模式 设计模式13-迭代器模式 设计模式14-中介者模式...
设计模式是软件工程中的一种最佳实践,它是在特定上下文中解决常见问题的经验总结。"设计模式之美——教你写出高质量代码"这个主题旨在帮助开发者更好地理解和应用设计模式,从而提升代码的质量和可维护性。设计模式...
设计模式主要分为三大类: 1.创建型模式:工厂模式、抽象工厂模式、单例模式、建造者模式、原型模式。 2.结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。 4.行为型模式:...
涵盖了策略模式、代理模式、单例模式、多例模式、工厂方法模式、抽象工厂模式、门面模式、适配器模式、模板方法模式、建造者模式、桥梁模式、命令模式、装饰模式、迭代器模式等十四种常用的设计模式。 策略模式...
本作业以“软件设计模式”为主题,特别关注了装饰模式、工厂模式和适配器模式的运用。这三种模式都是面向对象设计的核心部分,它们在代码复用、结构优化和系统扩展性提升方面扮演着重要角色。 首先,装饰模式是一种...