设计模式面试题 一

news2024/11/18 17:44:55

第一题:阐述设计模式的责任链?

责任链模式定义:
使多个对象都有机会处理请求,从而避免请求的发送 者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一 个对象处理它为止。
责任链模式应用场景:
1) 有多个的对象可以处理一个请求,哪个对象处理该请求运行时刻自动确定。
2) 你想在不明确指定接收者的情况下,向多个对象中的一个提交一个请求。
3) 可处理一个请求的对象集合应被动态指定。

责任链模式由两个角色组成:
1) 抽象处理者角色(Handler):它定义了一个处理请求的接口。当然对于链子的不同实现,也可以在这个角色中实现后继链。
2) 具体处理者角色(Concrete Handler):实现抽象角色中定义的接口,并处理它所负责的请求。如果不能处理则访问它的后继者。

举例如下:

 

第十二题:阐述设计模式的适配器?

 

目标角色(Target):客户所期待得到的接口。

源角色(Adaptee):需要适配的类。

适配器角色(Adapter):通过包装一个需要适配的对象,把原接口转换成目标接口。

具体代码:

1.目标角色类

package com.szcatic.adapter;
public interface Target {
    void demand();
}
2.源角色类

package com.szcatic.adapter;
public class Adaptee {
    public void specialRequirements() {
        System.out.println("特殊要求");
    }
}
3.适配器角色类

package com.szcatic.adapter;
public class Adapter implements Target {
    private Adaptee adaptee;
    public Adapter(Adaptee adaptee) {
        this.adaptee = adaptee;
    }
    @Override
    public void demand() {
        adaptee.specialRequirements();
    }
}
4.测试类

package com.szcatic.adapter.test;
import org.junit.jupiter.api.Test;
import com.szcatic.adapter.Adaptee;
import com.szcatic.adapter.Adapter;
public class AdapterTest {
    @Test
    void testDemand() {
        new Adapter(new Adaptee()).demand();
    }
}

优点:

1、可以让任何两个没有关联的类一起运行。

2、提高了类的复用。

3、增加了类的透明度。

4、灵活性好。

缺点:

1、过多地使用适配器,会让系统非常零乱,不易整体进行把握。
 

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Ruoyi-Cloud框架学习-【03 后端启动 + 前端启动】

打开运行基础模块(启动没有先后顺序) 记得在后台先启动Redis,不然会报错 RuoYiGatewayApplication (网关模块 必须) : 即前端所有访问需要通过网关而不是直接访问具体接口、网关会对后台的微服务进行转发 RuoYiAuth…

虹科回顾 | 虹科云科技2022年深度好文

2022年,我们一起学习了很多技术文章、优秀案例 我们的关键词是 数据库、BI、文件存储、高性能计算、数据管理、IT 下面一起来回顾虹科云科技过去一年的深度好文吧! 2022虹科云科技深度好文回顾 点击文字均可跳转到相关文章 数据库系列 ● 虹科产品 | 一文详解…

springboot1

让我们快速构建项目并且运行,他就是搭建程序的脚手架 尽可能减少一切xml的相关配置 快速创建一个spring boot的启动项目 在pom.xml中导入父类的启动器 引入父类的依赖 下面我们写一个web的启动器 这个启动器导入了之后 整个web项目需要的依赖也就导入了 并且把版…

【MIUI刷机】旧机降级记录

欢迎来到 Claffic 的博客 💞💞💞 前言: 小米MAX2是我的第一部小米手机,这款发布于2017年5月25日的小米手机已伴随我5年了,现在再次拿起这部手机,依然能勾起我对当时手机圈的记忆。 当时的我对手…

顶顶通呼叫中心中间件(mod_cti基于FreeSWITCH)-群集方案

群集方案 群集介绍 在大规模的外呼或者呼入系统,比如整个系统需要1万并发,单机最高也就3000-5000并发,这时候就需要多机群集了。顶顶通呼叫中心中间件使用redis数据库,多个FreeSWITCH(mod_cti)连接同一个redis就可以很容易的配置…

基于乾元通多卡聚合智能通信系统的典型应用场景分析

紧急事态处置 城市公共安全包含自然灾害事故灾难、公共卫生事件、社会安全事件、事故灾难,在城镇化快速发展的今天,作为维护公共安全的职能部门,带来了新的挑战。 乾元通科技使用多径混传、多路聚合技术,开发出的智能融合通信设备…

五款非常轻便的实用小工具

大伙们,开工大吉! 1.系统清理——WiseCare365 WiseCare365是由WiseCleaner开发的一款用来管理,维护,配置以及解决电脑故障的适用于Windows操作系统的电脑的免费软件。其实Wise Care 365就是把这个公司之前推出的所有优化工具整合…

Redmi GPro游戏本升级系统失败无法启动怎么办?

Redmi GPro游戏本升级系统失败无法启动怎么办?有用户使用Redmi GPro电脑去进行电脑系统的升级时,出现了系统升级错误。在电脑关机重新启动之后,电脑出现了蓝屏的情况。那么遇到这个问题要怎么去进行解决呢?来看看具体的解决方法吧…

美颜滤镜sdk常用的图形处理算法、代码分析

美颜滤镜sdk目前在视频、图文社交平台中的使用率是非常高的,特别是短视频平台和直播平台。今天小编就为大家讲解一下美颜滤镜sdk经常用到的算法和代码。 一、预处理算法、检测算法 在采集完图像后,首先会对图像进行预处理操作。保证图像的对比度清晰&…

c:out标签怎么是使用?

在JSP页面中&#xff0c;最常见的操作就是向页面输出一段文本信息&#xff0c;为此&#xff0c;Core标签库提供了一个<c:out>标签&#xff0c;该标签可以将一段文本内容或表达式的结果输出到客户端。如果<c:out>标签输出的文本内容中包含了需要进行转义的特殊字符&…

css字体、文本

无衬线字体(sans-serif) 特点: 1.文字笔画粗细均匀&#xff0c;并且首尾无装饰 2.场景:网页中大多采用无衬线字体 3.常见该系列字体:黑体、Arial3 衬线字体(serif) 特点: 1.文字笔画粗细不均&#xff0c;并且首尾有笔锋装饰 2.场景:报刊书籍中应用广泛 3.常见该系列字体:宋体、…

音视频处理

问题背景&#xff1a;h265格式的视频转码之后ios存在兼容问题 原转码命令&#xff1a; /usr/local/bin/ffmpeg -y -i /data/tmp/1672385812000-tks3wa.mp4 -vf scale720:1281 -r 30 /data/tmp/1672385812000-tks3wa_720.mp4 -hide_banner解决办法&#xff1a; // 原视频格式为…

可持久化线段树(主席树)详解(c++ 图片演示+ 代码)

文章目录可持久化线段树&#xff08;主席树&#xff09;建树前准备!初始化建树&#xff01;更新操作!区间查询!AC code可持久化线段树&#xff08;主席树&#xff09; 可持久化线段树指的是可持久化权值线段树&#xff0c;关于权值线段树可以看我这篇博客&#xff1a; 权值线…

Mininal BASH-like line editing is supported.

翻译&#xff1a;支持类似Mininal bash的行编辑。对于第一个单词&#xff0c;TAB列出了可能的命令补全。“其他任何地方”标签列出可能的设备或文件补全。原因分析&#xff1a;出现这个问题的原因是windows启动的时候&#xff0c;没有找到启动文件。&#xff08;我的电脑之所以…

每天一道大厂SQL题【Day01】

每天一道大厂SQL题【Day01】 大家好&#xff0c;我是Maynor。相信大家和我一样&#xff0c;都有一个大厂梦&#xff0c;作为一名资深大数据选手&#xff0c;深知SQL重要性&#xff0c;接下来我准备用100天时间&#xff0c;基于大数据岗面试中的经典题&#xff0c;以每日1题的形…

5.6 奇异值

对单位圆的乘法 首先我们在单位圆上遍历所有的点&#xff0c;作为二维向量&#xff0c;来研究某个矩阵乘以这些向量得到的结果&#xff0c;我们选三种矩阵&#xff0c;秩为0的矩阵&#xff0c;秩为1的矩阵和秩为2的矩阵。   秩为0的矩阵就一个&#xff0c;也就是0矩阵&#x…

【页面设计】02.CSS

CSS&#xff1a;Cascading Style Sheets 层叠样式表1.不是编程语言。2.告诉浏览器如何指定样式、布局等一、基本格式效果&#xff1a;二、三种方式添加CSS1.外部样式表&#xff08;1&#xff09;CSS保存在.css文件中&#xff08;2&#xff09;在HTML的<head>中使用<li…

棕黑色L-CQDs/TiO2 离子液体修饰/500nm粒径氮硫掺杂碳量子点N,S-CQDs/ZnO的制备过程

棕黑色L-CQDs/TiO2 离子液体修饰/500nm粒径氮硫掺杂碳量子点N,S-CQDs/ZnO的制备过程 今天小编分享L-CQDs/TiO2 离子液体修饰碳量子点的制备过程&#xff0c;一起看看吧: L-CQDs/TiO2 离子液体修饰碳量子点的制备过程&#xff1a; 通过水热法制备L-CQDs/TiO2复合催化剂。将50 …

Harbor安装对接Containerd

使用docker-compose安装harbor 先决条件&#xff1a; 安装docker安装docker-compose 安装参考 下载并解压 wget -c https://github.com/goharbor/harbor/releases/download/v2.3.5/harbor-offline-installer-v2.3.5.tgztar -zxvf harbor-offline-installer-v2.3.5.tgz cd harbo…

Aurora、Chip2chip、Ethernet(一)

摘要&#xff1a;之前的文章对aurora、chip2chip以及Ethernet这三个IP都进行介绍、仿真和使用说明。但是在实际使用中一定没有那么简单&#xff0c;在复杂联合使用的情况下&#xff0c;肯定会碰到各种各样的问题。此系列文章主要说明如何解决联合使用情况下碰到的一系列问题。 …