资讯专栏INFORMATION COLUMN

装饰者模式

GeekGhc / 1743人阅读

摘要:实现对衣服进行抽象有一件衬衫衬衫给衣服装饰一些饰品,对饰品进行抽象在衣服上加一个泰迪熊泰迪熊在衣服上加一朵花花儿实现一个装饰有泰迪熊花儿的衬衫这个写法是不是让你想起什么一件带花儿泰迪熊的衬衫出来了衣服的组成部分

描述:采用组合的方式将多个同类对象任意搭配组成一个对象,达到增强效果

场景:比如一件衣服如果只是一件衬衫,那么太单调了,如果在这衣服上加上泰迪熊、花儿,那么这件衣服就特有喜感了(相当于衣服的功能加强了,可以让人笑了)。

实现:

// 对衣服进行抽象
abstract class Clothes {
    abstract String description();
}
// 有一件衬衫
class Shirt extends Clothes {
    @Override
    String description() {
        return "衬衫";
    }
}
// 给衣服装饰一些饰品,对饰品进行抽象
abstract class Decorator extends Clothes {
    Clothes clothes;
    Decorator(Clothes clothes) {
        this.clothes = clothes;
    }
}
// 在衣服上加一个泰迪熊
class TedBearDecorator extends Decorator {
    TedBearDecorator(Clothes clothes) {
        super(clothes);
    }
    @Override
    String description() {
        return this.clothes.description() + "," + "泰迪熊";
    }
}
//在衣服上加一朵花
class FlowerDecorator extends Decorator {
    FlowerDecorator(Clothes clothes) {
        super(clothes);
    }
    @Override
    String description() {
        return this.clothes.description() + "," + "花儿";
    }
}
// 实现一个装饰有泰迪熊、花儿的衬衫
public class DecoratorDemo {
    public static void main(String[] args) {
        // 这个写法是不是让你想起什么
        Clothes tedFlowerShirt = new TedBearDecorator(new FlowerDecorator(new Shirt()));
        // 一件带花儿、泰迪熊的衬衫出来了
        System.out.println("衣服的组成部分:" + tedFlowerShirt.description());
    }
}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/64014.html

相关文章

  • Java 设计模式装饰模式

    摘要:装饰者模式组成结构抽象构件给出抽象接口或抽象类,以规范准备接收附加功能的对象。装饰者模式图解装饰者模式应用场景需要扩展一个类的功能,或给一个类添加附加职责。装饰者对象接受所有来自客户端的请求。参考资料设计模式 一、了解装饰者模式 1.1 什么是装饰者模式 装饰者模式指的是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰者来包裹真实的对...

    kumfo 评论0 收藏0
  • 设计模式装饰模式

    摘要:相关设计模式装饰者模式和代理模式装饰者模式关注再一个对象上动态添加方法代理模式关注再对代理对象的控制访问,可以对客户隐藏被代理类的信息装饰着模式和适配器模式都叫包装模式关于新职责适配器也可以在转换时增加新的职责,但主要目的不在此。 0x01.定义与类型 定义:装饰模式指的是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的...

    chuyao 评论0 收藏0
  • 设计模式——装饰模式

    摘要:装饰者模式遵循了开闭原则,对扩展开放,对修改关闭。但是在使用装饰者模式的同时可能会引入大量小类,而且使用装饰者模式除了实例化组件外,还要把组件包装进装饰者,会使代码显得不易理解。 1. 简介   装饰者模式是一种结构型模式,它可以动态的将责任附加到对象上,在扩展功能方面,它比继承更有弹性。装饰者模式遵循了开闭原则,对扩展开放,对修改关闭。  虽然在装饰者模式中也使用了继承,但是继承只是...

    hoohack 评论0 收藏0
  • 代理模式装饰模式

    摘要:简介代理模式和装饰者模式是两种常见的设计模式。这里通过构造函数的参数将被代理对象传入到代理中,也可以通过其它方式,如提供一个方法。下面是的代码输出首先依然是先创建一个需要被代理的对象,然后把它传入到的构造函数中。 简介 代理模式和装饰者模式是两种常见的设计模式。代理模式是为其它对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以...

    NusterCache 评论0 收藏0
  • 美颜相机中的设计模式 —— 装饰模式

    摘要:这是设计模式系列的第二篇,系列文章目录如下用一句话总结那些殊途同归的设计模式工厂策略模版方法美颜相机中的设计模式装饰者模式几乎所有的设计模式都是通过增加一层抽象来解决问题。 这是设计模式系列的第二篇,系列文章目录如下: 用一句话总结那些殊途同归的设计模式:工厂=?策略=?模版方法 美颜相机中的设计模式——装饰者模式 几乎所有的设计模式都是通过增加一层抽象来解决问题。 上一篇中提...

    anonymoussf 评论0 收藏0
  • JavaScript设计模式----装饰模式

    摘要:声明这个系列为阅读设计模式与开发实践曾探著一书的读书笔记装饰者模式的定义装饰者模式能够在不改变对象自身的基础上,在程序运行期间给对像动态的添加职责。与继承相比,装饰者是一种更轻便灵活的做法。装饰者模式的作用就是为对象动态的加入某些行为。 声明:这个系列为阅读《JavaScript设计模式与开发实践》 ----曾探@著一书的读书笔记 装饰者模式的定义: 装饰者(decorator)模式能...

    rose 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<