设计模式——结构型

1.装饰器模式

要素:装饰器,装饰对象
为待装饰对象中某一结构特征添加内容,而不是新建一个特征

/*** 装饰对象*/
public interface Shape {public void draw();
}
/*** 具体装饰对象*/
public class Circle implements Shape{private String TAG = "Circle";@Overridepublic void draw() {Log.d(TAG,"draw circle");}
}/*** 装饰器*/
public abstract class ShapeDecorator implements Shape{protected Shape shape;private String TAG = "ShapeDecorator";public ShapeDecorator(Shape shape) {this.shape = shape;}
}
/*** 具体装饰器,当只有一个待装饰对象时可不需要抽象装饰器*/
public class ColorDecorator extends ShapeDecorator {private String TAG = "ColorDecorator";public ColorDecorator(Shape shape) {super(shape);}//原结构方法public void draw() {shape.draw();setColor();}//给原结构添加的装饰private void setColor() {Log.d(TAG,"set color");}
}//测试
Circle circle = new Circle();
ColorDecorator colorCircle = new ColorDecorator(circle);
colorDecorator.draw();

输出log:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/282748.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于Java SSM框架实现水果销售网站系统项目【项目源码+论文说明】计算机毕业设计

基于java的SSM框架实现水果销售网站系统演示 摘要 21世纪的今天,随着社会的不断发展与进步,人们对于信息科学化的认识,已由低层次向高层次发展,由原来的感性认识向理性认识提高,管理工作的重要性已逐渐被人们所认识&a…

Java语法之Object类

Object类时Java默认提供的类,是所有类的父类,它里面有好多便利的方法供我们使用 1.equals对象比较方法 在我们看来,姓名年龄一样就应该是同一个人,但实际上运行结果却是false,看一下源码: 源码里面是在用俩…

MDK编译过程和文件类型

MDK是一款IDE软件,具有,编辑,编译,链接,下载,调试等等的功能。 1.编译器介绍: MDK可以编译C/C文件和汇编文件,MDK只是一款IDE软件,那他内部使用的是什么编译器呢&#x…

Google Gemini 模型本地可视化

Google近期发布了Gemini模型,而且开放了Gemini Pro API,Gemini Pro 可免费使用! Gemini Pro支持全球180个国家的38种语言,目前接受文本、图片作为输入并生成文本作为输出。 Gemini Pro的表现超越了其他同类模型,当前版…

便签类工具有哪些?比较好用的便签工具用哪个

便签类工具比较多,每个人使用便签的用处不同,有些人用便签当做记事本来记事,有些人借助便签工具来记录转瞬即逝的灵感,还有些人使用便签来记录学习笔记,还有些人用便签罗列工作计划...... 你是否也在和其它人一样寻找…

学习Java第70天,过滤器Filter简介

过滤器概述 Filter,即过滤器,是JAVAEE技术规范之一,作用目标资源的请求进行过滤的一套技术规范,是Java Web项目中最为实用的技术之一 Filter接口定义了过滤器的开发规范,所有的过滤器都要实现该接口 Filter的工作位置是项目中所有目标资源之前,容器在创建HttpServletRequest和…

漏洞复现-浙大恩特客户资源管理系统CustomerAction.entphone;.js 接口任意文件上传漏洞(附漏洞检测脚本)

免责声明 文章中涉及的漏洞均已修复,敏感信息均已做打码处理,文章仅做经验分享用途,切勿当真,未授权的攻击属于非法行为!文章中敏感信息均已做多层打马处理。传播、利用本文章所提供的信息而造成的任何直接或者间接的…

计网 - TCP重传策略大揭秘:确保数据可靠传输的秘诀

文章目录 Pre为什么需要设计重传机制四种常见的重传机制超时重传快速重传SACKD-SACK Pre 计网 - 传输层协议 TCP:TCP 为什么握手是 3 次、挥手是 4 次? 计网 - TCP三次握手原理全曝光:深度解析与实战演示 计网 - TCP四次挥手原理全曝光&am…

【OpenHarmony 北向应用开发】ArkTS语言入门(构建应用页面)

ArkTS语言入门 在学习ArkTS语言之前,我们首先需要一个能够编译并运行该语言的工具 DevEco Studio。 了解ArkTS ArkTS是OpenHarmony优选的主力应用开发语言。ArkTS围绕应用开发在TypeScript(简称TS)生态基础上做了进一步扩展,继…

nginx_rtmp_module 之 ngx_rtmp_mp4_module 的mp4源码分析

一:整体代码函数预览 static ngx_int_t ngx_rtmp_mp4_postconfiguration(ngx_conf_t *cf) {ngx_rtmp_play_main_conf_t *pmcf;ngx_rtmp_play_fmt_t **pfmt, *fmt;pmcf ngx_rtmp_conf_get_module_main_conf(cf, ngx_rtmp_play_module);pfmt ngx_ar…

ACM32如何保护算法、协议不被破解或者修改

ACM32具有以下几种功能,可以保护算法、协议不被破解或者修改。 1.存储保护  RDP读保护  WRP写保护  PCROP 专有代码读保护  MPU存储区域权限控制  Secure User Memory存储区域加密 2.密码学算法引擎  AES  HASH  随机数生成  …

RHEL8_Linux使用podman管理容器

本章主要介绍使用 podman 管理容器 了解什么是容器,容器和镜像的关系安装和配置podman拉取和删除镜像给镜像打标签导出和导入镜像创建和删除镜像 1.了解容器及和镜像的关系 对于初学者来说,不太容易理解什么是容器,这里举一个例子。想象一下…