`
会飞的拉布拉多
  • 浏览: 15738 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java设计模式之装饰者模式

阅读更多
  装饰者模式在我理解就是对象功能的封装和传递的过程。
  我们去花店买花送人的时候会首先选哪种花,比如送老婆选的红玫瑰,送妈妈的康乃馨等等,然后包装走人;如果你想送大一点的,那你就得买其他的去搭配,比如101朵玫瑰,外加一些荷兰百合,总之我们会买更多的花(在模式中我们认为有更多的操作)让它能够成为一束花,然后再选那种包装,不论哪种,最终我们得到的是带有包装的一朵花或者一束花。
  我们把打成花束和包装都叫做装饰,让一朵花经过不断的包装能有不同的表现。
 
  花有很多种,我们定义花的接口:
 
public interface 花{
     public void printCurrentStatus();//这个接口是指这个花在当前时间的状态,是花?                                           //还是花束?还是已经包装好了?
  }


  我们要买的玫瑰或者康乃馨:
 
public class 玫瑰 implements 花{
     public void printCurrentStatus(){
System.out.println("选好一朵玫瑰花")
     }
}



  然后我们进行装饰,第一个装饰就是把花打花束:
 
public class 打成花束 implements 花{
     private 花 object;
     
     public 打成花束(花 object){
        this.object = object;
     }

     public void printCurrentStatus(){
          object.printCurrentStatus();
          System.out.println("打好了花束");
     }
        
  }


   下一个装饰是进行包装:
   
public class 包装 implements 花{
     private 花 object;
     
     public 包装(花 object){
        this.object = object;
     }

     public void printCurrentStatus(){
          object.printCurrentStatus();
          System.out.println("打好了包装");
     }
        
  }

  好了,在回顾一下我们买花的过程吧:
 
public static void main(String[] args){
      花   花object  = new 玫瑰();//选好的玫瑰
      花object = new  包装(花object);//如果我们就买一支,那直接打包吧
      花object.printCurrentStatus();//输出: 选好一朵玫瑰花
                                               打好了包装

      花   花object1  = new 玫瑰();//选好的玫瑰
      花object1 = new 打成花束(花object1);//打成花束
      花object1 = new  包装(花object1);//包装
      花object1.printCurrentStatus();//输出什么呢?大家自己运行吧

  }


  示例可能没有那么贴切,但是要表达的意思是一致的,这样,花最终就得到了装饰后的结果

  
分享到:
评论

相关推荐

    java设计模式之装饰者模式代码

    装饰者模式是面向对象设计模式的一种,主要用于动态地给一个对象添加一些额外的职责,而不会改变该对象的类。这种模式允许我们独立于对象的类来扩展对象的功能,为对象提供新的行为,同时保持了代码的可读性和可维护...

    设计模式--装饰者模式java例子

    装饰者模式是软件设计模式中的一种结构型模式,它...综上所述,装饰者模式在Java编程中是一种重要的设计模式,尤其适用于需要动态添加或删除对象功能的场景。通过以上示例和解释,我们可以更好地理解和应用装饰者模式。

    JAVA设计模式(java设计)

    Java设计模式是面向对象编程领域中的重要概念,它是一套被广泛接受并实践的解决软件设计问题的经验总结。设计模式并非具体的代码或库,而是一种在特定情境下为了解决常见问题而制定的通用解决方案的描述。它们描述了...

    Java 经典设计模式讲解以及项目实战

    Java 经典设计模式讲解以及项目实战 设计模式简介:主要介绍各种设计模式的概念和运用场景等 设计模式综合运用:主要是笔者在实际工作中运用到的一些设计模式综合运用事例的提炼 Spring设计模式简介:主要是讲述...

    Java设计模式之禅

    《Java设计模式之禅》是一本深入浅出讲解设计模式的书籍,书中不仅包含23种经典设计模式的案例,还详细介绍了设计模式背后的思想和原则,适合初学者以及对设计模式有一定了解的程序员阅读。本书旨在帮助读者理解如何...

    《Java设计模式》刘伟 课后习题及模拟试题答案.rar

    《Java设计模式》是刘伟老师的一本经典教材,它深入浅出地讲解了软件设计中的重要概念——设计模式。设计模式是经验丰富的开发者在解决常见问题时总结出的通用解决方案,是软件开发中的智慧结晶。这本书的课后习题和...

    《java设计模式》课后习题模拟试题解答——刘伟.zip

    Java设计模式是软件工程中的一种最佳实践,它总结了在特定场景下解决常见问题的经验,为程序员提供了可重用的解决方案。本资料“《java设计模式》课后习题模拟试题解答——刘伟.zip”主要涵盖了Java设计模式的学习与...

    《Java设计模式》课后答案-刘伟.rar

    《Java设计模式》是刘伟教授的一本关于设计模式的教材,主要面向高等学校的学生和对Java编程有深入兴趣的开发者。设计模式是软件工程中的一种重要思想,它封装了在特定场景下的问题解决方案,可以提高代码的可读性、...

    java设计模式ppt

    ### Java设计模式详解 在软件开发领域,设计模式是一种被广泛采用的解决方案,用来解决常见的设计问题。设计模式不仅能够帮助开发者写出可复用、可维护的代码,还能提高团队间的沟通效率。以下是对给定文件中提到的...

    java设计模式(刘伟)

    ### Java设计模式(刘伟) #### 一、引言 在《Java设计模式》这本书中,作者刘伟全面地介绍了24种经典的设计模式,并通过丰富的案例和代码示例进行了详细的解析。本书不仅适合初学者作为入门教材,也适合有一定...

    java设计模式.高清影印版

    Java设计模式是软件工程中的一种最佳实践,它提供了一套标准的解决方案,用于解决在编写可维护、可扩展和高效代码时经常遇到的问题。这些模式是经验丰富的开发者们在面对相似问题时,经过反复试验和优化后总结出的...

    重学java的设计模式

    Java作为一门广泛应用的开发语言,其设计模式的应用对于提高代码质量、可维护性和可扩展性至关重要。本文将着重探讨创建型模式、结构型模式和行为模式这三大类设计模式,并结合六项设计原则进行深入解析。 首先,...

    Java设计模式-装饰者模式

    本章可以称为“给爱用继承的人一个全新的设计眼界”。我们即将再度探讨典型滥用问题。你将在本章学到如何使用对象组合的方式,做到在运行时装饰类。为什么呢?一旦你熟悉了装饰者的技巧...——《Head First 设计模式》

    Head First 设计模式 +Java设计模式(第2版)

    《Head First 设计模式》与《Java设计模式(第2版)》是两本非常重要的IT书籍,专注于软件开发中的设计模式。设计模式是解决软件设计中常见问题的经验总结,它们提供了一种标准的方法来处理特定场景下的问题,使得代码...

    23种java设计模式.pdf

    " JAVA 设计模式概述" JAVA 设计模式是指在软件设计过程中,为了提高代码的可维护性、灵活性和可扩展性所使用的一些惯用解决方案。JAVA 设计模式可以分为三种:创建模式、结构模式和行为模式。 1. 创建模式 创建...

    java设计模式课程设计

    使用5种设计模式完成的一个点单系统,显示不同系列下的所有商品,点击选择冰度甜度之后添加到订单中,计算总金额,下单之后发送订单到门店的后厨制作商品。使用了抽象工厂模式、装饰模式、单例模式、代理模式、原型...

    java 23种设计模式.zip

    设计模式主要分为三大类: 1.创建型模式:工厂模式、抽象工厂模式、单例模式、建造者模式、原型模式。 2.结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。 4.行为型模式:...

    java设计模式的应用

    ### Java设计模式的应用 #### 一、引言 在当今快速发展的软件开发领域,Java作为一门功能强大且灵活的语言,不仅拥有丰富的API资源,还能与强大的数据库系统无缝对接。这使得许多开发人员能够以模块化的形式构建...

Global site tag (gtag.js) - Google Analytics