怎么实现web设计模式中的装饰者模式

发布时间:2021-11-16 11:41:56 作者:iii
来源:亿速云 阅读:125

这篇文章主要讲解了“怎么实现web设计模式中的装饰者模式”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么实现web设计模式中的装饰者模式”吧!

模式定义

装饰者模式属于结构型设计模式,首先我们先了解下装饰者模式的定义。

In object-oriented programming, the decorator pattern is a design pattern that allows behavior to be added to an individual object, either statically or dynamically, without affecting the behavior of other objects from the same class. The decorator pattern is often useful for adhering to the Single Responsibility Principle, as it allows functionality to be divided between classes with unique areas of concern.

简而言之, 装饰者模式就是动态地为一个对象扩展额外的功能,无论是动态还是静态,都不影响相同类的其他对象的行为, 这样使得对象在运行时更加灵活。

装饰者实现的方式通常为组合或者继承,可以让客户端根据需求进行对应的装饰,来达到功能增加的目标。为了简化理解,装饰者模式中装饰一词其实就是给原来的对象添加额外功能。

模式结构

接下来我们看下装饰者模式的层次结构和主要角色.

模式实现

现在我们用喝咖啡的例子来实现下装饰者模式,假设我们要买一杯咖啡,需要加糖,加奶,而什么都不加的咖啡与加奶,加糖的价格都不一样,我们就要计算调制一杯加糖加奶的咖啡需要花费多少钱。

这里咖啡就是我们的具体组件 ConcerateComponent, 奶和糖就是具体装饰对象 ConcreteDecorator。 为了简单,我们先创建一个Component接口类 Drink, 定义两个方法用来获得价格和描述:

怎么实现web设计模式中的装饰者模式

接着,创建一个 ConcreteComponentCoffee 实现 Drink 接口.

怎么实现web设计模式中的装饰者模式

现在就需要一个抽象类 DrinkDecorator,用于扩展实现功能增强. 怎么实现web设计模式中的装饰者模式

然后就是实现具体装饰对象 MilkSugar. 怎么实现web设计模式中的装饰者模式

最后客户端实现制作咖啡的动作: 怎么实现web设计模式中的装饰者模式

下图为示例的类图:

怎么实现web设计模式中的装饰者模式

可以从上面例子看出,通过添加不同的材料,价格不同,并且描述信息也不一样,并且添加顺序可以动态改变,甚至不添加,让对象变得十分灵活, 这就是装饰者模式的精髓所在。

模式使用场景

装饰者模式同样大量应用在 JDK 源码中,我们经常可以看到:

装饰者模式可以让程序中对象在运行时中进行功能的增强和移除,并且采用更灵活的组合方式来进行扩展。

模式的得与失

优点:

缺点:

感谢各位的阅读,以上就是“怎么实现web设计模式中的装饰者模式”的内容了,经过本文的学习后,相信大家对怎么实现web设计模式中的装饰者模式这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

推荐阅读:
  1. web开发中如何实现单态设计模式
  2. javascript设计模式之装饰者模式怎么用

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

web

上一篇:Ambari 2.7.3.0如何安装新组件

下一篇:如何全自动安装Mongo副本集

相关阅读

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

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