设计模式-结构型模式

适配者模式
现有的系统放置在新环境中,新环境要求的接口是现对象不能满足的/系统需要使用现有的类,
此类的接口不符合系统的要求;适配器继承或者依赖已有的对象,实现想要的目标接口
桥接模式
用继承会造成类爆炸问题,扩展起来不灵活
实现系统有多个角度分类,每种角度都可能变化
抽象类依赖实现类
场景:杯子:大中小,口味:原味,加糖;继承实现需要6个子类
手机:vivio,oppo,华为,手机壳:简约,可爱型需要10个类
桥接模式使用组合代替了继承,将类之间的静态继承关系转换为动态的对象组合关系,使用组合而不用继承,会使系统更加灵活,并易于扩展,同时有效控制了系统中类的个数。
手机Phone一个抽象类,桥接手机壳类,继承手机实现类vivio,oppo,华为;手机壳接口类,实现接口类简约,可爱型
组合模式
树型结构的问题/对象的部分-整体层次结构为树型结构
树枝内部组合该接口,并且包含内部属性List
过滤者模式
过滤解耦/多个不同的过滤标准过滤
逻辑运算以解耦的方式
实体类
public class People{private string name;private string gender,private string matrial;}
抽象过滤器
public interface Filter{List doFilter(List)};
具体过滤器
public class MatrialFilter implements Filter{private MatrialEunm matrial;
public List doFilter(List){List result;for(){if(MatrialEunm.matrial.equel(people.getMatrialType)}} return result;};
public class GenderFilter implements Filter{};
调用
MatrialFilter matrialFilter = new MatrialFilter();
List people = matrailFilter.doFilter(peopleList);
装饰器模式
注重行为的扩展
动态的给一个对象添加一些额外的职责
不想增加多个子类的情况下扩展类
将具体功能指责划分,同时继承

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

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

相关文章

二级指针使用

在c和c中如果我们想使用指针指向或者使用指针变量存放另外一个指针的地址,最容易想到的是再定义一个指针来存放: 例: int a 10; int * p &a; int *p1 &p; // 这种定义方法理论上是可行的,但是c和c中是不允许的,存放指针变量 …

方法论系列:数据科学框架入门

目录 第一章 - 数据科学家如何战胜困难第二章 - 数据科学框架第三章 - 步骤1:定义问题和步骤2:收集数据第四章 - 步骤3:准备数据第五章 - 数据清洗的4个C:纠正、补全、创建和转换第六章 - 步骤4:使用统计学进行探索性…

融资项目——swagger2的注解

1. ApiModel与ApiModelProperty(在实体类中使用) 如上图,ApiModel加在实体类上方,用于整体描述实体类。ApiModelProperty(value"xxx",example"xxx")放于每个属性上方,用于对属性进行描述。swagger2网页上的效果如下图&am…

IIS服务器的配置与管理

1) 安装IIS服务器,并添加站点,该服务器的IP地址为192.168.1.xx 。 2) 配置网站,并设置该站点不允许匿名访问,仅允许使用自己的本地用户登录连接。 3) 配置网站,限制拒绝192.168.1.100IP地址访问 。 4) 客户端使用19…

【Redis】七、Redis主从复制(重点)

文章目录 1、概念1.1、主从复制的作用主要包括1.2、一般来说,要将Redis运用于工程项目中,只使用一台Redis是万万不能的(宕机),原因如下 2、环境配置2.1、复制拷贝3个配置文件,然后修改对应的信息拷贝文件改…

ubuntu-22.04.3 配置

1.防火墙 a、查看防火墙状态:inactive是关闭,active是开启。 sudo ufw statusb、开启防火墙。 sudo ufw enablec、关闭防火墙。 sudo ufw disable2.设置Ip ifconfigsudo cp /etc/netplan/00-installer-config.yaml /etc/netplan/00-installer-config.y…

使用 subprocess.Popen 封装 start_program 方法,启动应用程序

一、前置说明 subprocess 模块是 Python 中用于创建和管理子进程的标准库模块。它提供了多种函数和类,其中最常用的是 subprocess.run() 和 subprocess.Popen()。 subprocess.run() 是一个简单的函数,用于运行命令并等待其完成。subprocess.Popen() 是一个更灵活的类,可以…

【闲聊】瓦罕走廊 是中国与 阿富汗 接壤。 在瓦罕走廊上可以建设公路吗?

【闲聊】 瓦罕走廊(Wakhan Corridor)是一条狭长的地带,位于阿富汗东北部,与中国、塔吉克斯坦和巴基斯坦接壤。由于其地理位置特殊和地形复杂,建设公路面临着一系列挑战: 地形挑战:瓦罕走廊地处…

【性能优化】MySql数据库查询优化方案

阅读本文你的收获 了解系统运行效率提升的整体解决思路和方向学会MySQl中进行数据库查询优化的步骤学会看慢查询、执行计划、进行性能分析、调优 一、问题:如果你的系统运行很慢,你有什么解决方案? ​关于这个问题,我们通常首先…

js显示实时时间

文章目录 一、效果二、思路三、最后 一、效果 用JS实现XXXX年XX月XX日 星期X XX时XX分XX秒 效果 效果 &#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>time</title><script t…

PyQt6 利用Pyinstaller打包发布程序

锋哥原创的PyQt6视频教程&#xff1a; 2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~共计53条视频&#xff0c;包括&#xff1a;2024版 PyQt6 Python桌面开发 视频教程(无废话版…

【数据库系统概论】第2章-关系数据库

复习记录 2.1 关系数据结构及形式化定义2.1.1 关系2.1.2 关系模式2.1.3 关系数据库 2.2 关系操作2.3 关系的完整性2.4 关系代数题目 2.1 关系数据结构及形式化定义 2.1.1 关系 一些概念 关系 R ( D 1 , D 2 , . . . , D n ) R(D_1,D_2,...,D_n) R(D1​,D2​,...,Dn​) D i…

linux:sed 用法详解

文章目录 1. 描述2. 语法2.1 参数2.2 例子替换删除写入 3. 参考 1. 描述 sed 的全称是 “stream editor” &#xff08;数据流编辑器&#xff09;&#xff0c;是以数据流的方式对文本内容进行编辑的。它主要用于对文本数据进行处理和转换&#xff0c;常被用于自动编辑一个或多…

初学链表(分析建立学生信息链表)

本题要求实现一个将输入的学生成绩组织成单向链表的简单函数。 #include <stdio.h> #include <stdlib.h> #include <string.h> struct stud_node { int num; char name[20]; int score; struct stud_node *next; }; struct stu…

Leetcode算法系列| 4. 寻找两个正序数组的中位数

目录 1.题目2.题解C# 解法一&#xff1a;合并List根据长度找中位数C# 解法二&#xff1a;归并排序后根据长度找中位数C# 解法三&#xff1a;方法二的优化&#xff0c;不真实添加到listC# 解法四&#xff1a;第k小数C# 解法五&#xff1a;从中位数的概念定义入手 1.题目 给定两个…

Unity中Shader旋转矩阵(二维旋转矩阵)

文章目录 前言一、旋转矩阵的原理1、我们以原点为中心&#xff0c;旋转坐标轴θ度2、求 P~2x~&#xff1a;3、求P~2y~:4、最后得到 P~2~点 的点阵5、该点阵可以拆分为以下两个矩阵相乘的结果 二、在Shader中&#xff0c;使用该旋转矩阵实现围绕 z 轴旋转1、在属性面板定义 floa…

【ZYNQ】ZYNQ7000 XADC 及其驱动示例

XADC 简介 ZYNQ SoC 的 XADC 模块包括两个 12 位的模数转换器&#xff0c;转换速率可以达到 1MSPS&#xff08;每秒一百万次采样&#xff09;。它带有片上温度和电压传感器&#xff0c;可以测量芯片工作时的温度和供电电压。 在 7 系列的 FPGA 中&#xff0c;XADC 提供了 JTA…

30. MVC设计模式

JavaEE 开发流程 ↓MVC的概念 MVC是Model-View-Controller的简称&#xff0c;即模型-视图-控制器。 MVC是一种设计模式&#xff0c;它把应用程序分成三个核心模块&#xff1a;模型、视图、控制器&#xff0c;它们各自处理自己的任务。 模型(model) 模型是应用程序的主体部分…

【算法题】5. 最长回文子串

题目 给你一个字符串 s&#xff0c;找到 s 中最长的回文子串。 如果字符串的反序与原始字符串相同&#xff0c;则该字符串称为回文字符串。 示例 1&#xff1a; 输入&#xff1a;s "babad" 输出&#xff1a;"bab" 解释&#xff1a;"aba" 同样…

Android模拟器的安装和adb连接

一、前置说明 APP 自动化可以使用真机进行测试&#xff0c;也可以使用模拟器来模拟安卓设备。我们可以根据个人喜好安装模拟器&#xff0c;个人推荐安装两款模拟器&#xff1a;网易 MuMu 模拟器、夜神模拟器。 MuMu模拟器可以支持 Android 12 版本&#xff0c;优点是&#xf…