2-Python与设计模式--前言

0-Python与设计模式–前言

一 什么是设计模式

设计模式是面对各种问题进行提炼和抽象而形成的解决方案。这些设计方案是前人不断试验,
考虑了封装性、复用性、效率、可修改、可移植等各种因素的高度总结。它不限于一种特定的语言,
它是一种解决问题的思想和方法

二 为什么要有设计模式

公司人事会有变动,程序员也会成长。不管是哪种情况,代码非常有可能会被移交,即代码的编写者和维护者
很有可能会是不同的人。那么代码的可读性就显得非常重要了。由于高级语言的出现,让机器读懂你的意图
已经不是最主要的“矛盾”,而让人读懂你的意图才是最重要。按照设计模式编写的代码,其可读性也会大大
提升,利于团队项目的继承和扩展

三 有那些设计模式

设计模式可以分为三个大类:创建类设计模式、结构类设计模式、行为类设计模式创建类设计模式(5种)
单例模式、工厂模式(简单工厂模式、抽象工厂模式)、建造者模式、原型模式结构类设计模式(7种)
代理模式、装饰器模式、适配器模式、门面模式、组合模式、享元模式、桥梁模式行为类设计模式(11种)
策略模式、责任链模式、命令模式、中介者模式、模板模式、迭代器模式、访问者模式、观察者模式、
解释器模式、备忘录模式、状态模式设计模式也衍生出了很多的新的种类,不局限于这23

四 设计模式与架构,框架的关系

1 软件框架与设计模式的关系

软件框架随着软件工程的发展而出现,所谓的软件框架,是提取了特定领域的软件的共性部分所形成的软件体
系,它并不是一个成熟的软件,而更像是一个“半成品”,程序员在框架之上,可以很方便地某些特定领域实现
又快又可靠的二次开发。设计模式和软件框架在软件设计中是两个不同的研究领域:A、设计模式如前边的定义所讲,它指的是针对一类
问题的解决方法,一个设计模式可应用于不同的框架和被不同的语言所实现;而框架则是一个应用的体系结构,
是一种或多种设计模式和代码的混合体;B、设计模式相较于框架更容易移植,并且可以用各种语言实现,
而软件框架则受限于领域大环境。虽然设计模式和软件框架有很多不同,但在某些方面他们二者是统一的,
即重视软件复用,提高开发效率。

2 软件架构与设计模式的关系

软件架构是个比较大的概念,架构要考虑软件的整体结构、层次划分以及不同部分间的协作和交互等,
架构的着眼点偏整体。相比之下,框架和设计模式的范围则具体很多,框架着眼于领域内的解决方法,
而设计模式则针对一类问题的解决方案和设计思路。总体来说,软件架构可以由不同的框架和不同的设计模式,再加上特定的构件组合来实现;
框架可以根据设计模式结合特定编程语言和环境来实现。设计模式就是解决单一问题的设计思路和解决方法。

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

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

相关文章

GoogleNet详解

一、亮点 AlexNet、VGG都只有一个输出层。googlenet有三个(其中两个是辅助分类层) 二、先看看Inception结构 1、Inception 之前的网络: AlexNet、VGG都是串行结构 Inception: 并行结构 上一层的输出同时传入四个并行结构&…

有了倾斜摄影,如何搭建一座智慧城市?

随着无人机航测、倾斜摄影等全新一代测绘信息技术方法的发展,可以迅速搜集制作精细化的城市三维模型,搭建城市地理信息基础服务架构。 近期都在重点关注的“智慧城市”究竟是什么,有什么重大作用,同时又面临着什么难关&#xff0c…

短剧付费变现小程序源码系统+开通会员+在线充值 附带完整的搭建教程

大家好啊,今天小编来给大家分享一款短剧付费变现小程序源码系统。近年来,随着互联网技术的飞速发展,短剧成为了一个备受瞩目的领域。短剧以其简洁、紧凑的故事情节和制作周期短、传播速度快的特点,成为了越来越多人的选择。然而&a…

小红书达人类型特点有哪些,创作形式总结!

小红书自带的社交电商属性,吸引了众多优秀的内容创作者和品牌达人。他们以不同的风格和主题,赢得了粉丝们的喜爱和关注。今天为大家分享下小红书达人类型特点有哪些,创作形式总结! 1. 内容创作风格 我们从内容上来区分小红书达人类…

微信小程序开发学习——小程序基本架构

1.创建一个包含:首页、咨询、关于我们 3个标签的小程序,每个标签都有对应的页面、图标和标签文字。 知识点:app.json文件对小程序进行全局配置,同名.json文件对本窗口进行配置 app.json属性: pages用于指定小程序由哪…

设计模式之建造者(Builder)模式

目录 1、什么是建造者Builder模式? 2、建造者Builder模式的利与弊 3、建造者Builder模式的应用场景 4、建造者模式中的指导者(Director)有什么作用? 5、建造者Builder模式与其他模式的关系 小结 1、什么是建造者Builder模式…

百分点科技入选《2023年央国企数字化升级研究报告》

近日,艾瑞咨询发布了《2023年央国企数字化升级研究报告》,报告总结了央国企数字化升级的方向和特点,并重点研究了基础平台及关键技术工具、通用及综合型应用、重要配套建设等方面。报告指出,数据治理是央国企数字化升级过程中的重…

【鸿蒙应用ArkTS开发系列】- 云开发入门实战二 实现省市地区三级联动地址选择器组件(上)

目录 概述 云数据库开发 一、创建云数据库的对象类型。 二、预置数据(为对象类型添加数据条目)。 三、部署云数据库 云函数实现业务逻辑 一、创建云函数 二、云函数目录讲解 三、创建resources目录 四、获取云端凭据 五、导出之前创建的元数据…

HTML新手入门笔记整理:特殊符号

音标符 音标符 字符 Construct 输出结果 ̀、 a a à ́′ a a án ˆ a a â ̃&#xff5e; a a ã ̀̀、 O O Ò ́́′ O O Ó ˆ O O Ô ̃&#xff5e; O O Õ 字符 显示结果 描述 实体名称 实体编号 空格 <…

【数据结构】F : 道路建设 (Ver. I)

F : 道路建设 (Ver. I) Description 有N个村庄&#xff0c;编号从1到N&#xff0c;你应该建造一些道路&#xff0c;使每个村庄都可以相互连接。 两个村A和B是相连的&#xff0c;当且仅当A和B之间有一条道路&#xff0c;或者存在一个村C使得在A和C之间有一条道路&#xff0c;并…

编程实例,随机抽奖编程

编程实例&#xff0c;随机抽奖编程 操作步骤&#xff1a; 1、将在本店消费的会员数据导入到抽奖池&#xff0c;可以设定最近多少天内的记录。 2、点击 开始随机抽奖&#xff0c;软件将从抽奖池随机抽取9名&#xff0c;并不断变化&#xff0c;每0.02秒重新随机抽取9名显示到屏…

Java 项目中常用注解汇总!! (自整理)

Spring框架的注解 PostMapping("/getDetails") post请求 映射到接口 RequestBody 用来接收HTTP请求体中参数 GetMapping("/getDetails") get请求 映射到接口 RequestParam 用来接收URL中的查询参数 PutMappi…

7:kotlin 数组 (Arrays)

数组是一种数据结构&#xff0c;它保存固定数量的相同类型或其子类型的值。kotlin中最常见的数组类型是对象类型数组&#xff0c;数组由array类表示。 什么时候使用 当你在kotlin中有特殊的底层需求需要满足时&#xff0c;可以使用数组。例如&#xff0c;如果你有超出常规应用…

关于js的find的基本用法

Array.prototype.find() 是 JavaScript 的一个数组方法&#xff0c;它被用来在数组中查找一个符合条件的元素。一旦找到第一个符合条件的元素, find() 会立即返回这个元素的值&#xff0c;否则返回 undefined。 以下是 find() 方法的基本语法&#xff1a; arr.find(callback(el…

​LeetCode解法汇总1410. HTML 实体解析器

目录链接&#xff1a; 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目&#xff1a; https://github.com/September26/java-algorithms 原题链接&#xff1a;力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 描述&#xff1a; 「HTML 实…

利用企业被执行人信息查询API保障商业交易安全

前言 在当今竞争激烈的商业环境中&#xff0c;企业为了保障商业交易的安全性不断寻求新的手段。随着技术的发展&#xff0c;利用企业被执行人信息查询API已经成为了一种强有力的工具&#xff0c;能够帮助企业在商业交易中降低风险&#xff0c;提高合作的信任度。 企业被执行人…

如何使用 JavaScript 实现图片上传并转换为 LaTeX 公式

在本教程中&#xff0c;我们将学习如何使用 JavaScript 创建一个上传图片的功能&#xff0c;并将所选图片转换为 LaTeX 公式。我们将使用 FileReader 对象来读取图片并将其转换为 Base64 格式&#xff0c;然后利用 img2latex API 将其转换为 LaTeX 公式。 1. HTML 结构 首先&…

SpringMVC日志追踪笔记整理

新建logback-spring.xml <?xml version"1.0" encoding"UTF-8"?> <configuration><property name"PATH" value"./log/business"></property><appender name"STDOUT" class"ch.qos.logback…

linux进程调度(三)-进程终止

文章目录 2.3 进程退出的几种情况2.4 进程终止过程分析2.4.1 exit_notify函数2.4.1.1 forget_original_parent函数2.4.1.1.1 find_child_reaper函数2.4.1.1.2 find_new_reaper函数2.4.1.1.3 reparent_leader函数 2.4.1.2 do_notify_parent函数2.4.1.3 release_task函数 2.4.2 d…

GitHub桌面版

GitHub桌面版 一、GitHub 桌面版二、clone 仓库三、更新仓库 一、GitHub 桌面版 二、clone 仓库 三、更新仓库