java中的装饰器模式基本概念及实现

发布时间:2021-09-10 15:15:50 作者:chen
来源:亿速云 阅读:152

本篇内容介绍了“java中的装饰器模式基本概念及实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

基本概念

装饰器模式,顾名思义起的是装饰的作用,就是在一个类上增加功能。如果通过继承来增加功能,在不修改代码的情况下,如果增加功能多的话,会使类的数量爆炸式增长,为管理带来巨大的麻烦。装饰器模式就比较好地解决了这一点。

介绍

以下为装饰器模式的通用类图: java中的装饰器模式基本概念及实现

实现

我们以生产一件衣服为例,生产一件衣服本身是个很简单的过程,一块布料裁剪好了之后做出衣服的样子就可以了,但是这样的衣服是卖不出去的,因为毫无美感,我们需要通过一些装饰来使衣服变得好看。但是时代在变化,人们的审美也在变化,装饰总是不断在变的,所以我们就要有一个灵活机动的模式来修改装饰。

Clothes.java

public interface Clothes {     public void makeClothes(); }

MakeClothes.java

public class MakeClothes implements Clothes {      @Override     public void makeClothes() {         System.out.println("制作一件衣服");     }  }
  1. 步骤 3 创建装饰器。

OperationSubstract.java

public class OperationSubstract implements Strategy{    @Override    public int doOperation(int num1, int num2) {       return num1 - num2;    } }

话不多说,先来个衣服的最初成品,就是毫无美感的那种,那么如果现在要增加装饰,可以用一个类继承MakeClothes,然后增加里面makeClothes()方法,但是如果过几天装饰就变了,那么又要改动代码,而且如果装饰过多,这个类就显得很庞杂,不好维护,这个时候装饰器模式就来大显身手了。

Decorator.java

public class Decorator implements Clothes {      private Clothes clothes;     public Decorator(Clothes _clothes) {         this.clothes = _clothes;     }     @Override     public void makeClothes() {         clothes.makeClothes();     } }

这就是一个装饰器,它有一个构造函数,参数是一个衣服类,同时它重写了makeClothes()方法,以便它的子类对其进行修改。下面是两个子类,分别对衣服进行了绣花和镂空

Embroidery.java

public class Embroidery extends Decorator {      public Embroidery(Clothes _clothes) {         super(_clothes);     }     public void embroidery() {         System.out.println("给衣服绣花");     }     @Override     public void makeClothes() {         super.makeClothes();         this.embroidery();     } }

Hollow.java

public class Hollow extends Decorator {      public Hollow(Clothes _clothes) {         super(_clothes);     }     public void hollow() {         System.out.println("关键位置镂空");     }     @Override     public void makeClothes() {         super.makeClothes();         this.hollow();     } }

这两个子类的构造器都传入一个衣服模型,而且两个子类分别有各自的方法——绣花和镂空,但是他们均重写了makeClothes()方法,在制作衣服的过程中加入了绣花和镂空的操作,这样一来,我们只需要增删改这几个装饰器的子类,就可以完成各种不同的装饰,简洁明了,一目了然。下面测试一下:

DecoratorDemo.java

public class DecoratorDemo {      public static void main(String[] args) {         Clothes clothes = new MakeClothes();         clothes = new Embroidery(clothes);         clothes = new Hollow(clothes);         clothes.makeClothes();         System.out.println("衣服做好了");     } }

执行程序,输出结果:

制作一件衣服 给衣服绣花 关键位置镂空 衣服做好了

“java中的装饰器模式基本概念及实现”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

推荐阅读:
  1. java实现装饰器模式(Decorator Pattern)
  2. Java逃逸分析的基本概念

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

java

上一篇:如何使用Toolkit拖拽式编码提升开发效率

下一篇:怎么通过重启路由的方法切换IP地址

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》