【Java面试高频-设计模式】- Java装饰者模式是什么?
发布日期:2021-06-29 15:36:51
浏览次数:2
分类:技术文章
本文共 1290 字,大约阅读时间需要 4 分钟。
装饰者模式(Decorator)
为对象动态添加功能。
class diagram
装饰者(Decorator)和具体组件(ConcreteComponet)都继承自组件(Component), 具体组件的方法实现不需要依赖与其它对象,而装饰者组合了一个组件,这样它可以装饰其它装饰者或者具体组件。
所谓装饰,就是把这个装饰者套在被装饰者之上,从而动态扩展被装饰者的功能。
实现:
设计不同种类的饮料,饮料可以添加配料,比如添加沙拉,牛奶。每增加一种配料,该饮料的价格就加1
组件
// 抽象接口饮料类interface Drink{ double cost();}
具体组件
// 具体组件饮料1 class Drink1 implements Drink{ @Override public double cost() { // TODO Auto-generated method stub return 1; }}//具体组件饮料2 class Drink2 implements Drink{ @Override public double cost() { // TODO Auto-generated method stub return 1; }}
装饰者
// 抽象的装饰者abstract class MatrialDecorator implements Drink{ protected Drink drink;}// 具体的装饰者1class MilkMatrial extends MatrialDecorator{ public MilkMatrial(Drink drink) { this.drink = drink; } @Override public double cost() { // TODO Auto-generated method stub return 1+drink.cost(); } }class CoffeeMatrial extends MatrialDecorator{ public CoffeeMatrial(Drink drink) { this.drink = drink; } @Override public double cost() { // TODO Auto-generated method stub return 1+drink.cost(); } }
测试
public class Test15 { public static void main(String[] args) { Drink drink = new Drink2(); drink = new MilkMatrial(drink); drink = new CoffeeMatrial(drink); System.out.println(drink.cost()); }}
转载地址:https://codingchaozhang.blog.csdn.net/article/details/116738153 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2024年04月06日 17时24分40秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
AIX 作为Web Server 使用时,tcp相关的几个参数调整
2019-04-29
自我学习37:请描述一下网页从开始请求到最后展示的完整过程
2019-04-29
自我学习38:如何区分前后端BUG
2019-04-29
自我学习39:接口自动化测试用例&功能测试用例区别
2019-04-29
mirror去兔子补丁下载 附安装教程
2019-04-29
mirror去兔子补丁 v3.0附安装教程
2019-04-29
mirror去兔子补丁为什么还有兔子_mirror去兔子补丁使用教程
2019-04-29
3dmax2012安装教程
2019-04-29
OC渲染器(Octane Render)整合版安装包 附安装教程
2019-04-29
操作系统期末大题复习
2019-04-29
hive:分区表,hbase外表
2019-04-29
想要成为运维,想要成为后期的架构师?这些知识是必备的!
2019-04-29
linux 是如何 快速一键安装禅道的呐?
2019-04-29
运维面试基础试题(四)
2019-04-29
一键安装Openstack单节点 必能成功
2019-04-29
面试紧张怎么办
2019-04-29
关系型数据库 ,nosql数据库简介
2019-04-29
Centos 7搭建NTP时间同步服务器
2019-04-29
centos7 基于rsync+inotify 实现定时备份
2019-04-29
指定IP进行 文件的分发
2019-04-29