结构型模式-装饰器模式(代码片段)

liunianfeiyu liunianfeiyu     2023-02-03     502

关键词:

  对原有对象进行修饰,如有一个篮子,现在对篮子进行修饰,放入苹果,香蕉,橙子

package constructional.pattern.decorator;

/* 
 * 创建一个对象的抽象也就是接口 
*/  
public interface Basket   
    public void show();  
      
package constructional.pattern.decorator;

/** 
 *身份:被装饰的对象 
 *一个对接口的实现,这个对象表示要我们将来要修饰的篮子里装内容,如果想修饰篮子的造型,还可以创建其他类实现Basket的接口,比如Shape 
 * 不理解的话可以查看java语言的接口抽象机制 
*/  
public class Original implements Basket  
    public void show()  
      System.out.println("The original Basket contains");  
      
package constructional.pattern.decorator;

/** 
 *身份:装饰器 
 *为原来的类添加新的功能 
*/  
public class AppleDecorator implements Basket  
    private Basket basket;  
    public AppleDecorator( Basket basket)  
      super();  
      this.basket = basket;  
      
      
    public void show()  
      basket.show();  
      System.out.println("An Apple");  
      
      
package constructional.pattern.decorator;

/** 
 *身份:装饰器 
*/  
public class BananaDecorator implements Basket  
    private Basket basket;  
    public BananaDecorator(Basket basket)  
        super();  
        this.basket = basket;  
      
      
    public void show()  
        basket.show();  
        System.out.println("A Banana");  
      
      
package constructional.pattern.decorator;

/** 
 *身份:装饰器 
*/  
public class OrangeDecorator implements Basket  
    private Basket basket;  
    public OrangeDecorator(Basket basket)  
        super();  
        this.basket = basket;  
      
      
    public void show()  
        basket.show();  
        System.out.println("An Oranage");  
      
      

  测试代码如下:

package constructional.pattern.decorator;
/* 
 * 设计模式:装饰器模式 
 * java 简单的演示 
*/  
  
/** 
 * 
 * @author octobershiner 
 * 2011 7 25 
 * SE.HIT 
*/  
public class DecoratorPattern   
  
    /** 
     * @param args the command line arguments 
*/  
    public static void main(String[] args)   
        // TODO code application logic here  
        Basket basket = new Original();  
        //一个装饰的过程  
        Basket myBasket =new AppleDecorator(new BananaDecorator(new OrangeDecorator(basket)));   
        myBasket.show();  
      

  运行结果:

技术分享图片

designpattern-装饰器模式结构型(代码片段)

...式(DecoratorPattern)也叫包装设计模式,属于结构型模式,它是作为现在的类的一个包装,允许向一个现有的对象添加新的功能,同时又不改变其结构。给对象增加功能,一般两种方式继承和关联组合。... 查看详情

结构性设计模式之装饰器模式(代码片段)

@TOC装饰器模式概述实现原理主要角色装饰器模式主要包含4种角色1.抽象组件(Component)2.具体组件(ConcreteComponent)3.抽象装饰器(Decorator)4.具体装饰器(ConcreteDecorator)应用场景1.用于扩展一个类的功能或给一个类添加附加职责。2.动态的... 查看详情

c++装饰器模式的实现(代码片段)

...能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。意图:动态地给一个对象添加一些额外的 查看详情

结构篇-装饰器模式(代码片段)

...;装饰者)就是能够化“腐朽”为神奇的利器。装饰器模式(Decorator)能够在运行时动态地为原始对 查看详情

java模式之装饰器模式(代码片段)

...来说,装饰器模式相比生成子类更为灵活,属于结构型设计模式装饰器模式提供了比继承更有弹性的替代方案将功能附加到对象上。因此,装饰器模式的核心功能是功能扩展,使用装饰器模式可以透明且动态的扩... 查看详情

java模式之装饰器模式(代码片段)

...来说,装饰器模式相比生成子类更为灵活,属于结构型设计模式装饰器模式提供了比继承更有弹性的替代方案将功能附加到对象上。因此,装饰器模式的核心功能是功能扩展,使用装饰器模式可以透明且动态的扩... 查看详情

装饰器模式(代码片段)

   装饰器模式,顾名思义,拘束将某个类重新装扮一下,使得它比原来更“漂亮”,或者在功能上更强大,这就是装饰器模式所要达到的目的。但是作为原来的这个类的使用者,还不应该感受到装饰前和装饰后又什么不同... 查看详情

设计模式-结构型模式,装饰器模式(代码片段)

无论何时我们想对一个对象添加额外的功能,都有下面这些不同的可选方法。?如果合理,可以直接将功能添加到对象所属的类(例如,添加一个新的方法)?使用组合?使用继承与继承相比,通常应该优先选择组合,因为继承使得... 查看详情

结构型模式-装饰器模式(代码片段)

  对原有对象进行修饰,如有一个篮子,现在对篮子进行修饰,放入苹果,香蕉,橙子packageconstructional.pattern.decorator;/**创建一个对象的抽象也就是接口*/publicinterfaceBasketpublicvoidshow();packageconstructional.pattern.decorator;/***身份:被... 查看详情

java设计模式之装饰器学习与掌握(代码片段)

...责(即增加其额外功能)的模式,它属于对象结构型模式。优点装饰器模式完全遵守开闭原则通过使用不同装饰类及这些装饰类的排列组合,可以实现不同效果装饰器是继承的有力补充,比继承灵活, 查看详情

cpp装饰器模式(代码片段)

装饰器模式(结构型模式):在不改变现有对象结构的情况下,向对象添加新的功能,同时不改变其结构重点在于动态的增加删除功能,装饰类和被装饰类独立,不会耦合。返回的对象已经不是原来的对象了࿰... 查看详情

[设计模式c++go]结构型模式:装饰器模式(代码片段)

...能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。... 查看详情

设计模式-结构型模式_装饰器模式(代码片段)

文章目录结构型模式概述CaseBadImplBetterImpl小结结构型模式结构型模式主要是解决如何将对象和类组装成较大的结构,并同时保持结构的灵活和⾼效。结构型模式包括:适配器、桥接、组合、装饰器、外观、享元、代理ÿ... 查看详情

设计模式之装饰器模式(代码片段)

装饰器模式1.简要概述2.模式结构3.实现代码4.优点好处5.缺点弊端6.应用场景7.应用示例1.简要概述装饰器模式也叫作包装器模式,就是动态的为一个对象增加新的功能。装饰器模式是一种用于代替传统继承的技术,通过使... 查看详情

装饰器模式与javaio流(代码片段)

...能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。... 查看详情

结构型模式之装饰模式(代码片段)

...,装饰模式也有人称之为“油漆工模式”,它是一种对象结构型模式。一般有两种方式可以实现给一个类或对象增加行为:继承机制,使用继承机制 查看详情

设计模式——装饰器模式(代码片段)

...的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。装饰器模式结构图Component(抽象构件):它是装饰类和具体构件的公共父类(一般是接口或者抽象类);ConcreteComponent(具体构件)... 查看详情

装饰器模式(代码片段)

1介绍:1.1概念:装饰器模式允许向一个现有的对象添加新功能,同时又不改变其结构。这种模式创建了一个装饰类,来包装原有的类,在保证方法签名完整的情况下,添加了额外的功能。1.2优缺点:   优点:装饰类... 查看详情