`
lizhensan
  • 浏览: 381488 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

装饰模式 decorate

    博客分类:
  • java
 
阅读更多

package decorate;

public class Base {
   public String method(){
	   return "base";
   }
}
 package decorate;
public class Decorate1 extends Base {
    private Base base;
    public  Decorate1 (Base base)
    {
    	this.base=base;
    }
    public String method()
    {
    	 return base.method()+",Decorate1";
    }
}

 package decorate;

public class Decorate2 extends Base {
    private Base base;
    public  Decorate2 (Base base)
    {
    	this.base=base;
    }
    public String method()
    {
    	 return base.method()+",Decorate2";
    }
}

 package decorate;

public class Test {
	public static void main(String[] args) {
          Base obj=new Base();
          obj=new Decorate1(obj);
          obj=new Decorate2(obj);
          System.out.println(obj.method());
          
	}
}

 

装饰模式 可以对原有系统 或类进行 扩展。

重新包装、计算,实现更加方便、正确的api。

 

目的有两个:

1:对原有问题的修改。

2:对原有功能的完善。

 

分享到:
评论

相关推荐

    C#设计模式Decorate

    C#设计模式中的“装饰者(Decorate)”模式是一种结构型模式,它允许动态地给一个对象添加新的行为或职责,而不影响其它对象。装饰者模式的核心在于,它提供了向对象添加新功能而不使用继承的方法,从而避免了类爆炸...

    设计模式(七)之装饰模式.zip

    在"设计模式(七)之装饰模式.zip"的压缩包中,核心文件"Decorate.cs"及其可能的子类,揭示了装饰模式的实现细节。 首先,让我们理解装饰模式的基本结构。装饰模式通常包含以下角色: 1. 抽象组件(Component):定义...

    java 装饰模式 设计模式

    装饰模式是一种结构型设计模式,它允许在不改变对象本身的基础上,在运行时为对象添加新的功能。这种模式常被用于给对象动态地增加职责,尤其是当需要为对象添加多个职责时,比继承更加灵活且避免了类的爆炸性增长。...

    设计模式之装饰者模式1

    第三个例子进一步展示了装饰者模式的灵活性,通过`tree`对象的`decorate`和`getDecorator`方法,我们可以创建并应用多个装饰器,如`RedBalls`和`BlueBalls`,这些装饰器可以按需堆叠,以实现更复杂的装饰逻辑。...

    Python库 | decorate-0.0.13-py3-none-any.whl

    装饰器在Python中是一个强大的设计模式,允许我们在不修改原有代码的情况下,扩展或修改函数、方法或类的行为。这个名为"decorate"的库可能是为了简化和增强Python中的装饰器使用而创建的。版本号"0.0.13"表明这是该...

    Java装饰器设计模式_动力节点Java学院整理

    例如,InputStream 和 OutputStream 中的 decorate 方法就是使用了装饰器设计模式。 Java 装饰器设计模式是一种非常有用的设计模式,它可以使得系统更加灵活、可维护和可扩展。通过动态地给对象添加新的行为,我们...

    Python设计模式之装饰模式实例详解

    装饰模式是一种设计模式,它允许在不修改原有对象的情况下,通过添加新的行为或扩展功能来增强对象的能力。这种模式在Python中尤其有用,因为它提供了高度的灵活性,可以在运行时动态地改变对象的行为。 在装饰模式...

    decorate-demo.zip

    同时,装饰模式的调用链可能会影响性能。 总结来说,装饰者模式是一种强大的设计模式,它允许我们在运行时动态地为对象添加新功能,而不会破坏原有的类结构。通过理解装饰者模式的原理并熟练运用,我们可以编写出...

    DecoratePattern

    装饰模式是一种结构型设计模式,它允许我们向一个对象添加新的功能或行为,而不改变其原有的类。在Java中,装饰模式通常通过继承和组合来实现。下面将详细讲解装饰模式的基本概念、工作原理以及如何在Java中进行实现...

    23种java版设计模式源码案例.zip

    装饰器模式(decorate) 外观模式(facecade) 享元模式(flyweight) 代理模式(proxy) 行为型模式(behaviour) 责任链模式(chainrespon) 命令模式(commond) 解释器模式(interpreter) 迭代器模式(iterator) 中介者模式...

    深入理解JavaScript系列(29):设计模式之装饰者模式详解

    `tree.getDecorator` 方法用于创建装饰器并将其与基础组件关联,`RedBalls` 是一个具体的装饰器,它在调用父类(即基础组件)的 `decorate` 方法后,再添加自己的装饰行为。 装饰者模式的优点包括: 1. 动态性:...

    PHP设计模式之装饰器模式实例详解

    装饰器模式,也称为装饰者模式,是一种设计模式,它允许在不修改对象本身的情况下,通过添加新的行为或属性来扩展对象的功能。这种模式在PHP中尤其有用,因为PHP是动态类型的语言,允许灵活地创建和修改对象。下面将...

    PyPI 官网下载 | decorate-1.0.1-py3-none-any.whl

    `decorate`库可能是为了简化装饰器的创建和使用,提供了一些实用的工具和模式。具体的功能和用法需要查看库的文档或源代码才能了解。 总的来说,这个资源是一个针对Python 3的装饰器库,可以从PyPI官方渠道下载并...

    超市管理系统java源码swing-king-design:23种java设计模式

    装饰器模式(decorate) 外观模式(facecade) 享元模式(flyweight) 代理模式(proxy) 行为型模式(behaviour) 责任链模式(chainrespon) 命令模式(commond) 解释器模式(interpreter) 迭代器模式(iterator) 中介者模式...

    装饰公司信息管理系统

    该系统中的"decorate.mdb"文件名表明它使用了Microsoft Access数据库。Access是一个轻量级的数据库管理系统,适合小型企业或项目使用。在这里,它可能包含了装饰公司的客户信息、项目详情、员工资料、财务记录等各种...

    初识python之装饰器

    在这个例子中,`print_tips_decorate`是一个装饰器,它包装了`func2`函数,使得在调用`func2`时,会先执行装饰器内的代码。 ### 二、当装饰器函数需要参数时 有些情况下,装饰器自身也需要参数来定制其行为。这时...

    ASP.NET Core-main.zip

    ASP.NET Core的DI框架支持通过`services.Decorate, TDecorator>()`方法来注册装饰器,其中`TService`是接口,`TDecorator`是装饰器类。 在`ServiceRegistration-main`这个子目录中,可能包含的文件可能有: 1. `...

    siteMesh使用示例

    装饰器模式允许我们定义一个通用的页面布局,然后将内容填充到预定义的区域,如头部、主体和尾部。 2. **安装与配置** 在项目中集成 SiteMesh 需要在 `web.xml` 文件中配置 SiteMesh 过滤器。添加以下代码段来配置...

    简单过过Javascript设计模式(上)

    装饰器模式允许动态地向一个对象添加新的功能,而不会改变其原有的结构。在JavaScript中,装饰器通常用于类或类的方法。虽然ES7的装饰器语法还在讨论中,但TypeScript已经提供了对装饰器的支持。 ```javascript ...

    java sitemesh 页面框架

    2. **灵活性**:支持多种装饰模式,可以为不同类型的页面使用不同的装饰器。 3. **可扩展性**:可以通过自定义Filter或使用表达式语言(EL)来控制装饰过程。 4. **与Struts、Spring MVC等框架兼容**:Sitemesh可以...

Global site tag (gtag.js) - Google Analytics