装饰器模式:抽象构件 具体构件 抽象装饰 具体装饰

主要是在原结构不动的前提下 去增强功能 动态增强

zom

package com.qf.decorator;//抽象构件
public interface Component {public void operation();
}package com.qf.decorator;//具体构件角色
public class ConcreteComponent implements Component {@Overridepublic void operation() {System.out.println("调用具体构建 重写抽象构件的方法");}public ConcreteComponent() {System.out.println("具体构件对象创建");}
}package com.qf.decorator;//抽象装饰角色  继承构件接口
public abstract class Decorator implements Component {private Component component;//给 构件初始化public Decorator(Component component) {this.component = component;}//Component 构件接口的方法@Overridepublic void operation() {//接口装的方法  什么都没有component.operation();}
}package com.qf.decorator;//具体装饰角色
public class ConcreteDecorator extends Decorator {//初始化构件对象public ConcreteDecorator(Component component) {super(component);}//重写接口中的方法@Overridepublic void operation() {//先拿到 抽象装饰者中重写的方法super.operation();addFunction();}public void addFunction() {System.out.println("具体装饰角色中新增的方法");}}package com.qf.decorator;//装饰器 测试import java.io.BufferedInputStream;
import java.io.FileWriter;
import java.io.Writer;/*** 装饰器:不改变原有对象的情况下 动态的给该对象增加一些职责 额外的功能* 都实现了构件接口*/
public class DecoratorPattern {public static void main(String[] args) {
//        Component component = new ConcreteDecorator(new ConcreteComponent());//抽象构件 指向 具体构件Component component = new ConcreteComponent();component.operation();System.out.println("***********");//抽象装饰者 指向具体装饰者Decorator decorator = new ConcreteDecorator(component);//增强的方法decorator.operation();}
}

总结:装饰器模式 主要是用来增强抽象被装饰类中的方法  被装饰类 与装饰类独立发展 借助 装饰器聚合 降低了耦合度

设计模式-结构模式-装饰器模式 decorater相关推荐

  1. Java设计模式12:装饰器模式

    装饰器模式 装饰器模式又称为包装(Wrapper)模式.装饰器模式以多客户端透明的方式扩展对象的功能,是继承关系的一个替代方案. 装饰器模式的结构 通常给对象添加功能,要么直接修改对象添加相应的功能, ...

  2. java中装饰器_Java设计模式12:装饰器模式

    装饰器模式 装饰器模式又称为包装(Wrapper)模式.装饰器模式以多客户端透明的方式扩展对象的功能,是继承关系的一个替代方案. 装饰器模式的结构 通常给对象添加功能,要么直接修改对象添加相应的功能, ...

  3. 设计模式之【装饰器模式】

    和表妹去喝奶茶 表妹:哥啊,我想喝奶茶. 我:走啊,去哪里喝? 表妹:走,我带你去,我经常去的那家,不但好喝,还可以自由搭配很多小料.我每次都是不同的搭配,换着喝,嘻嘻. 我:你倒是挺会喝的嘛~ 你看 ...

  4. java设计模式(结构)--组合模式装饰器模式

    一.组合模式 用途:将对象组合成树形结构以表示 "部分--整体" 的层次结构.Composite使得用户对单个对象和组合对象的使用具有一致性. 案例:在中文中,一句话是由词语组成的 ...

  5. 《设计模式》之装饰器模式

    一.什么是装饰器模式 当需要对类的功能进行拓展时,一般可以使用继承,但如果需要拓展的功能种类很繁多,那势必会生成很多子类,增加系统的复杂性,并且使用继承实现功能拓展时,我们必须能够预见这些拓展功能,也 ...

  6. 设计模式篇——初探装饰器模式

    文章目录 1.装饰器模式介绍 2.装饰器模式类图 3.装饰器模式Demo实现(一个小镇的拉面馆) 4.装饰器模式总结 装饰器模式介绍:装饰器模式可以在不修改任何底层代码的情况下,给对象赋予新的职责(程 ...

  7. Java设计模式之《装饰器模式》及应用场景

    一.概述 装饰器模式作用是针对目标方法进行增强,提供新的功能或者额外的功能. 不同于适配器模式和桥接模式,装饰器模式涉及的是单方,和代理模式相同,而且目标必须是抽象的. 而实际上,装饰器模式和代理模式 ...

  8. Java设计模式之《装饰器模式》

    一.概述 装饰器模式作用是针对目标方法进行增强,提供新的功能或者额外的功能. 不同于适配器模式和桥接模式,装饰器模式涉及的是单方,和代理模式相同,而且目标必须是抽象的. 而实际上,装饰器模式和代理模式 ...

  9. 【Java设计模式系列】装饰器模式(Decorator Pattern)

    简介 一般有两种方式可以给一个类或对象新增行为: 继承 子类在拥有自身方法同时还拥有父类方法.但这种是静态的,用户无法控制增加行为的方式和时机. 关联 将一个类的对象嵌入另一个对象,由另一个对象决定是 ...

最新文章

  1. 姚班天才漆子超、IOI金牌得主陈启峰等联手进军AR领域:全员顶尖科技公司技术背景,打造“5G+AI+AR”先锋...
  2. (Java多线程)线程状态
  3. 青茶什么时候拆_为什么铁观音这么香?到底有没有添加香精?看完你就知道了...
  4. [C#.NET 拾遗补漏]14:使用结构体实现共用体
  5. Android 倒计时——Timer和CountDownTimer的使用,实现启动,暂停,继续,重复,重设时长以及启动service后台倒计时
  6. springcloud mysql库集群_SpringCloud实现分库分表模式下,数据库实时扩容方案
  7. Android系统性能优化(69)---含内存优化、布局优化
  8. 部门开始做技术talk
  9. 1-4课:程序、编程和算法之间到底有什么三角关系?
  10. PSP伊苏VS空之轨迹 游戏ISO文件和完美通关全要素存档
  11. axure能做剪切蒙版吗_二手车销售好做吗?没经验能做二手车销售吗?
  12. kubeadm安装部署k8s(1)
  13. php 完全前后端分离使用jwt,前后端分离,在 angular 8 中利用 JWT 进行身份认证
  14. Docker常用软件安装之MYSQL
  15. 数据中台已成下一风口,它会颠覆数据工程师的工作吗?
  16. golang中的rune类型
  17. 程序员才会明白的代码版“猜灯谜”
  18. 小学计算机走进智慧城堡教案,新苏教版二年级下册数学《千以内数的初步认识》教案教学设计...
  19. 数据分析:旅游景点销售门票和消费情况分析
  20. java计算机毕业设计公交线路查询系统(附源码、数据库)

热门文章

  1. 麦当劳大学: 标准化执行的66个细节
  2. 从Gartner 最新“客户之选”报告,看国内外RPA的差异化竞争
  3. 三菱伺服调试软件_三菱M70第四轴追加参数设定一览表
  4. Remind-You Part3. Python-Sqlite记录数据
  5. python爬取今日头条瀑布流_火车头采集今日头条教程,含视频教程!自行下载
  6. CSS------伪类(:first)和伪元素(::after)汇总以及区别分析
  7. 高德地图 android key,Android实现高德地图key值申请和地图显示
  8. docker安装python3.8镜像
  9. 国内十大人工智能网站
  10. oracle版本和驱动ojdbc、jdk版本对应关系