设计模式-结构模式-装饰器模式 decorater
装饰器模式:抽象构件 具体构件 抽象装饰 具体装饰
主要是在原结构不动的前提下 去增强功能 动态增强
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相关推荐
- Java设计模式12:装饰器模式
装饰器模式 装饰器模式又称为包装(Wrapper)模式.装饰器模式以多客户端透明的方式扩展对象的功能,是继承关系的一个替代方案. 装饰器模式的结构 通常给对象添加功能,要么直接修改对象添加相应的功能, ...
- java中装饰器_Java设计模式12:装饰器模式
装饰器模式 装饰器模式又称为包装(Wrapper)模式.装饰器模式以多客户端透明的方式扩展对象的功能,是继承关系的一个替代方案. 装饰器模式的结构 通常给对象添加功能,要么直接修改对象添加相应的功能, ...
- 设计模式之【装饰器模式】
和表妹去喝奶茶 表妹:哥啊,我想喝奶茶. 我:走啊,去哪里喝? 表妹:走,我带你去,我经常去的那家,不但好喝,还可以自由搭配很多小料.我每次都是不同的搭配,换着喝,嘻嘻. 我:你倒是挺会喝的嘛~ 你看 ...
- java设计模式(结构)--组合模式装饰器模式
一.组合模式 用途:将对象组合成树形结构以表示 "部分--整体" 的层次结构.Composite使得用户对单个对象和组合对象的使用具有一致性. 案例:在中文中,一句话是由词语组成的 ...
- 《设计模式》之装饰器模式
一.什么是装饰器模式 当需要对类的功能进行拓展时,一般可以使用继承,但如果需要拓展的功能种类很繁多,那势必会生成很多子类,增加系统的复杂性,并且使用继承实现功能拓展时,我们必须能够预见这些拓展功能,也 ...
- 设计模式篇——初探装饰器模式
文章目录 1.装饰器模式介绍 2.装饰器模式类图 3.装饰器模式Demo实现(一个小镇的拉面馆) 4.装饰器模式总结 装饰器模式介绍:装饰器模式可以在不修改任何底层代码的情况下,给对象赋予新的职责(程 ...
- Java设计模式之《装饰器模式》及应用场景
一.概述 装饰器模式作用是针对目标方法进行增强,提供新的功能或者额外的功能. 不同于适配器模式和桥接模式,装饰器模式涉及的是单方,和代理模式相同,而且目标必须是抽象的. 而实际上,装饰器模式和代理模式 ...
- Java设计模式之《装饰器模式》
一.概述 装饰器模式作用是针对目标方法进行增强,提供新的功能或者额外的功能. 不同于适配器模式和桥接模式,装饰器模式涉及的是单方,和代理模式相同,而且目标必须是抽象的. 而实际上,装饰器模式和代理模式 ...
- 【Java设计模式系列】装饰器模式(Decorator Pattern)
简介 一般有两种方式可以给一个类或对象新增行为: 继承 子类在拥有自身方法同时还拥有父类方法.但这种是静态的,用户无法控制增加行为的方式和时机. 关联 将一个类的对象嵌入另一个对象,由另一个对象决定是 ...
最新文章
- 姚班天才漆子超、IOI金牌得主陈启峰等联手进军AR领域:全员顶尖科技公司技术背景,打造“5G+AI+AR”先锋...
- (Java多线程)线程状态
- 青茶什么时候拆_为什么铁观音这么香?到底有没有添加香精?看完你就知道了...
- [C#.NET 拾遗补漏]14:使用结构体实现共用体
- Android 倒计时——Timer和CountDownTimer的使用,实现启动,暂停,继续,重复,重设时长以及启动service后台倒计时
- springcloud mysql库集群_SpringCloud实现分库分表模式下,数据库实时扩容方案
- Android系统性能优化(69)---含内存优化、布局优化
- 部门开始做技术talk
- 1-4课:程序、编程和算法之间到底有什么三角关系?
- PSP伊苏VS空之轨迹 游戏ISO文件和完美通关全要素存档
- axure能做剪切蒙版吗_二手车销售好做吗?没经验能做二手车销售吗?
- kubeadm安装部署k8s(1)
- php 完全前后端分离使用jwt,前后端分离,在 angular 8 中利用 JWT 进行身份认证
- Docker常用软件安装之MYSQL
- 数据中台已成下一风口,它会颠覆数据工程师的工作吗?
- golang中的rune类型
- 程序员才会明白的代码版“猜灯谜”
- 小学计算机走进智慧城堡教案,新苏教版二年级下册数学《千以内数的初步认识》教案教学设计...
- 数据分析:旅游景点销售门票和消费情况分析
- java计算机毕业设计公交线路查询系统(附源码、数据库)
热门文章
- 麦当劳大学: 标准化执行的66个细节
- 从Gartner 最新“客户之选”报告,看国内外RPA的差异化竞争
- 三菱伺服调试软件_三菱M70第四轴追加参数设定一览表
- Remind-You Part3. Python-Sqlite记录数据
- python爬取今日头条瀑布流_火车头采集今日头条教程,含视频教程!自行下载
- CSS------伪类(:first)和伪元素(::after)汇总以及区别分析
- 高德地图 android key,Android实现高德地图key值申请和地图显示
- docker安装python3.8镜像
- 国内十大人工智能网站
- oracle版本和驱动ojdbc、jdk版本对应关系