常用设计模式介绍

前言

简说设计模式。

文章目录

    • 前言
    • 一、设计模式的要素
      • 1、设计模式解决的问题
      • 2、设计模式分类
        • 1)创建型设计模式
        • 2)结构型设计模式
        • 3)行为型设计模式
    • 二、详细介绍
      • 1、创建型设计模式
        • 1)工厂方法模式
        • 2)抽象工厂模式
        • 3)生成器模式
        • 4)原型模式
        • 5)单例模式
      • 2、结构型设计模式
        • 1)适配器模式
        • 2)桥接模式
        • 3)组合模式
        • 4)装饰器模式
        • 5)享元模式
        • 6)代理模式
        • 7)外观模式
      • 3、行为型设计模式
        • 1)观察者模式
        • 2)状态模式
        • 3)策略模式
        • 4)访问者模式

一、设计模式的要素

1、设计模式解决的问题

  • 某个问题经常发生,这个模式就描述了这个问题以及解决这个问题的解决方法的核心

2、设计模式分类

1)创建型设计模式
  • 与对象的创建有关;
2)结构型设计模式
  • 处理类或对象的组合;
3)行为型设计模式
  • 对类或对象怎样交互和怎么分配职责进行描述;

二、详细介绍

内容最近更新!

1、创建型设计模式

1)工厂方法模式
  • 定义一个用于创建对象的接口,让子类决定实例化哪个类
public class SimpleFactory {public static void main(String[] args) {// 工厂A创造A产品,工厂B创造B产品// 父类 对象名 = new 子类()Factory factoryA = new FactoryA();Product productA = factoryA.createProduct();productA.info();Factory factoryB = new Factory();Product productB = factoryB.createProduct();productB.info();}
}interface Product {public void info();
}class ProductA implements Product {@Overridepublic void info() {System.out.println("产品的信息:A");}
}class ProductB implements Product {@Overridepublic void info() {System.out.println("产品的信息:B");}
}interface Factory {public Product createProduct();
}class FactoryA implements Factory {@Overridepublic Product createProduct() {return new ProductA();}
}class FactoryB implements Factory {@Overridepublic PProduct createProduct() {return new ProductB();}
}
2)抽象工厂模式
3)生成器模式
4)原型模式
5)单例模式

2、结构型设计模式

1)适配器模式
2)桥接模式
3)组合模式
4)装饰器模式
5)享元模式
6)代理模式
7)外观模式

3、行为型设计模式

1)观察者模式
2)状态模式
3)策略模式
4)访问者模式

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

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

相关文章

基于FPGA的光纤通信系统设计

文章目录 光纤通信系统的组成发送端FPGA端口定义状态机设计代码示例 接收端功能模块端口定义状态机设计 光纤通信系统的组成 发送端FPGA 发送控制逻辑、数据编码、校验码生成、缓存控制、时钟控制 端口定义 状态机设计 代码示例 接收端功能模块 接收端控制逻辑、数据解码、…

谈谈伦敦银投资的价值吗?

白银作为贵金属家族中的一员,当然有着其自身的经济价值和投资价值,尤其是在通货膨胀或货币贬值的时候,伦敦银的价格往往会上涨,投资者参与其中就能起到保值增值的作用。 此外,白银还是一种很好的避险资产,…

AST学习三---构造节点

题目:将 var a 3; 通过AST替换成 var a 12; 本次所用到的知识 1.path.replaceWith (单)节点替换函数,调用方式 path.replaceWith(newNode); 实参一般是node类型,即将当前遍历的path替换为实参里的新节点 注意,它不能用于Array的替换,即实参不能是Array的类型 2.babel/…

突破编程_C++_STL教程( copy 算法)

1 std::copy 算法的概念与用途 std::copy 是 C 标准库中的一种算法&#xff0c;主要用于将一个范围内的元素从一个位置复制到另一个位置。其函数原型如下&#xff1a; template<class InputIterator, class OutputIterator> OutputIterator copy(InputIterator first…

电商api数据接口开发亚马逊国际按关键字搜索商品API请求key接入演示

要使用亚马逊国际API按关键字搜索商品&#xff0c;你需要使用item_search请求。首先&#xff0c;你需要注册一个开发者账号并获取API密钥&#xff08;API Key和API Secret&#xff09;。然后&#xff0c;你可以使用以下Python代码示例来按关键字搜索商品&#xff1a; # coding…

港大新工作 HiGPT:一个模型,任意关系类型 !

论文标题&#xff1a; HiGPT: Heterogeneous Graph Language Model 论文链接&#xff1a; https://arxiv.org/abs/2402.16024 代码链接&#xff1a; https://github.com/HKUDS/HiGPT 项目网站&#xff1a; https://higpt-hku.github.io/ 1. 导读 异质图在各种领域&#xf…

Linux系统下安装部署Linux管理面板1panel

目录 一 1panel介绍 1、1Panel简介 2、1Panel特点 二、本地环境规划 1、本此实验目的 2、本地环境部署 三、部署1Panel&#xff08;在线安装&#xff09; 1.创建安装目录 2.一键部署1Panel 3.检查1Panel服务运行状态 4.检查1Panel监听端口 四、关闭防火墙和selinux…

zabbix进阶

知识点补充 zabbix server在主机上运行服务&#xff0c;端口号为10050&#xff0c;zabbix agent 在被监控机器上运行&#xff08;源码下载&#xff09;主要完成对cpu&#xff0c;磁盘的信息采集&#xff0c;端口号为10051 zabbix 软件结构组成&#xff1a; 1.Zabbix Web GUI …

leetcode 107.二叉树的层序遍历II

题目 思路 正常层序遍历输出&#xff1a; [[3],[9,20],[15,7]] 这道题要求的输出&#xff1a;[[15,7],[9,20],[3]] 可以观察到&#xff0c;只要我们把原来的结果reverse一下就行了。 代码 //leetcode submit region begin(Prohibit modification and deletion)import java…

HWY-41B无源静态电压继电器 整定范围19-240VAC导轨安装JOSEF约瑟

HWY-31A无辅源静态电压继电器 HWY-32A无辅源静态电压继电器 HWY-33A无辅源静态电压继电器 HWY-34A无辅源静态电压继电器 HWY-35A无辅源静态电压继电器 HWY-31B无辅源静态电压继电器 HWY-32B无辅源静态电压继电器 HWY-33B无辅源静态电压继电器 HWY-34B无辅源静态电压继电器 HW…

激活函数选得好,模型性能差不了!17个方法,让网络训练更高效

激活函数是神经网络中不可或缺的组成部分&#xff0c;它们通过引入非线性特性&#xff0c;增强了网络的表达能力和学习能力。常用的激活函数主要可以分为两大类&#xff1a;饱和激活函数、非饱和激活函数。其中sigmoid和tanh是饱和激活函数&#xff0c;而ReLU及其变体则是非饱和…

3月25日,每日信息差

&#x1f396; 素材来源官方媒体/网络新闻 &#x1f384; 京东汽车将和小米汽车进行深度合作 &#x1f30d; 百度将为苹果国行iPhone16提供AI功能&#xff1f;百度方面称暂无回应 &#x1f30b; 国产结核病新型mRNA疫苗即将问世 &#x1f381; 美国发布严重地磁暴预警&#xff…

NTP服务搭建

一、ntpd和ntpdate区别 1.ntpd是自动执行的远程更新本地系统时钟的服务&#xff0c;是平滑同步&#xff1b; 2.ntpdate是手工执行的服务&#xff0c;也就是一般用它执行一次本地时间更新&#xff0c;如果做成半自动&#xff0c;可以写入到crontab自动任务&#xff0c;从而变成…

maya常用快捷键

目录 移动视图 播放控制 连续播放python脚本 移动视图 按住“Alt鼠标中键”快捷键&#xff0c;然后拖动就能自由的移动视图。假如我们只在水平或者垂直方向上移动视图&#xff0c;只需按住“ShiftAlt鼠标中键”&#xff0c;就能在水平&#xff0c;或者垂直方向移动视图了。…

程序员35岁会失业吗?【来自主流AI的回答】

程序员35岁会失业吗&#xff1f; 35岁被认为是程序员职业生涯的分水岭&#xff0c;许多程序员开始担忧自己的职业发展是否会受到年龄的限制。有人担心随着年龄的增长&#xff0c;技术更新换代的速度会使得资深程序员难以跟上&#xff1b;而另一些人则认为&#xff0c;丰富的经…

图像变换(python)

前言 这个Python没学过&#xff0c;写的是真的不方便&#xff0c;有很多问题还没解决&#xff0c;暂时不想写了&#xff0c;感兴趣的同学可以完善一下。设计的思路就是摆几个控件然后将对应的函数实现&#xff0c;这个Python的坐标放置以及控件的大小我没弄懂&#xff0c;算出…

PCM /G711音频播放器 :Audacity

下载路径&#xff1a; Audacity | Free Audio editor, recorder, music making and more!

在微服务架构中如何使用 Nginx 作为入口控制器或者服务网关

声明&#xff1a;内容来自AI&#xff0c;未经验证&#xff0c;仅供参考! 一、在 Kubernetes 中使用 Nginx 作为 Ingress Controller&#xff1a; 在微服务架构和容器化部署中&#xff0c;Nginx 常常被用来作为入口控制器&#xff08;Ingress Controller&#xff09;或者服务网…

如何统计代码量

工具&#xff1a; cloc 下载地址&#xff1a; Releases AlDanial/cloc GitHub 使用方法&#xff1a;

武汉星起航:跨境电商行业的领军者,互帮互助共创佳绩

武汉星起航电子商务有限公司&#xff0c;作为跨境电商行业的领军者&#xff0c;以其出色的业绩和卓越的团队实力&#xff0c;在业内赢得了广泛的赞誉。公司自运营团队在亚马逊平台上成功开设了多家店铺&#xff0c;凭借着深耕跨境电商行业多年所积累的经验&#xff0c;取得了令…