23种设计模式——UML类图+简要分析+例题

UML类图在游戏中应用 笔者介绍:姜雪伟,IT公司技术合伙人,IT高级讲师,优快云社区专家,特邀编辑,畅销书作者,国家专利发明人;已出版书籍:《手把手教你架构3D游戏引擎》电子工业出版社和《Unity3D实战核心技术详解》电子工业出版社等。优快云视频网址:http://edu.youkuaiyun.com/lecturer/144 前面介绍过各种架构设计,也编写过使用架构设计开发游戏,但是没有细说用什么工具去做架构设计,在这里我 阅读详情
AI摘要

本文概述了设计模式的三大类别:创建型模式(如工厂方法、抽象工厂等)、结构型模式(如适配器、桥接等)和行为型模式(如策略、观察者等)。每类模式都详细介绍了其核心概念、应用场景和实例演示。

三类设计模式

  • 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。
  • 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。
  • 行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

一、创建型(五种)

这些设计模式提供了一种在创建对象的同时隐藏创建逻辑的方式,而不是使用 new 运算符直接实例化对象。这使得程序在判断针对某个给定实例需要创建哪些对象时更加灵活。

1、工厂方法模式(Factory Method)

定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、抽象工厂模式(Abstract Factory)

围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。接口是负责创建一个相关对象的工厂,不需要显式指定它们的类。每个生成的工厂都能按照工厂模式提供对象。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

ConcreteFactory代表产品族,AbstractProduct代表产品等级,Product就是具体产品(指定的产品族和指定的产品等级)
也可以把产品族看成厂家,产品等级看成商品,具体产品就是不同厂家生产的各种商品,厂家数和商品种类的数目都是固定的,二者数量相乘就是生产出来的具体产品数量
如下图,3*3=9种具体产品
或者把产品族想象成软件版本,不同版本的软件具有的功能数量都一样,但是实现该功能的方法会变。当我们想要改变某个功能的实现方法时,就需要升级版本,而非再去改动当前版本的功能实现方法
请添加图片描述
抽象工厂与工厂方法的区别:

抽象工厂:一开始就知道产品的种类数,但是后期需要改动产品
工厂方法:只生产具体的一类产品,后期也会改动产品

抽象工厂模式例题:
在这里插入图片描述
在这里插入图片描述

3、单例\单件模式(Singleton)

确保一个类只有一个实例,并提供全局访问点。
该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。

在这里插入图片描述
在这里插入图片描述

懒汉式

在这里插入图片描述

饿汉式

在这里插入图片描述
在这里插入图片描述
例题:打印池:在操作系统中,打印池(Print Spooler)是一个用于管理打印任务的应用程序,通过打印池用户可以删除、中止或者改变打印任务的优先级,在一个系统中只允许运行一个打印池对象,如果重复创建打印池则抛出异常。现使用单例模式来模拟实现打印池的设计,设计类图,实现代码。
在这里插入图片描述

4、建造者\生成器模式(Builder)

使用多个简单的对象一步一步构建成一个复杂的对象。一个 Builder 类会一步一步构造最终的对象。该 Builder 类是独立于其他对象的。

在这里插入图片描述
建造者模式的优点:
product和builder部分一般不变,但是当有新的要求,Director部分可以通过变更满足这些要求。这种将业务逻辑封装在导演类(Director)中的方式,对整体而言会有更好的稳定性。

工厂与建造者(生成器)模式的区别:
工厂主要变更的地方是产品的变更,而builder 模式主要变更的地方则是director,就是组装的变更。工厂更倾向基本组件的生产,而builder是这些基本组件的组装。
在这里插入图片描述
把Product分为多个部分,由抽象类Builder分别构造(通过Product的set方法),如果有很多种产品,则对应多个ConcreteBuilder,在Builder中声明抽象方法,在每个子类(ConcreteBuilder)中进行不同的重写。最后Director通过构造器或者set方法注入Builder,就可以选择不同的ConcreteBuilder,再使用conduct方法指挥产品的构建,同时返回产品类。

建造者模式例题:
在这里插入图片描述
在这里插入图片描述

5、原型模式(Prototype)

用于创建重复的对象,同时又能保证性能。
这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时,则采用这种模式。例如,一个对象需要在一个高代价的数据库操作之后被创建。我们可以缓存该对象,在下一个请求时返回它的克隆,在需要的时候更新数据库,以此来减少数据库调用。

在这里插入图片描述
在这里插入图片描述

一个原型类,只需要实现Cloneable接口,覆写clone方法,
此处clone方法可以改成任意的名称,因为Cloneable接口是个空接口,
你可以任意定义实现类的方法名,如cloneA或者cloneB,
因为此处的重点是super.clone()这句话,super.clone()调用的是Object的clone()方法,
在Object类中,clone()是native的。

深浅复制的区别:

  • 浅复制:将一个对象复制后,基本数据类型的变量都会重新创建,而引用类型,指向的还是原对象所指向的。
  • 深复制:将一个对象复制后,不论是基本数据类型还有引用类型,都是重新创建的。简单来说,就是深复制进行了完全彻底的复制,而浅复制不彻底。

在这里插入图片描述
原型模式例题:
在这里插入图片描述
在这里插入图片描述

二、结构型(七种)

这些设计模式关注类和对象的组合。继承的概念被用来组合接口和定义组合对象获得新功能的方式。
适配器模式是各种模式的起源。
在这里插入图片描述

6、适配器模式(Adapter)

将某个类的接口转换成客户端期望的另一个接口表示,目的是消除由于接口不匹配所造成的类的兼容性问题。分为类结构型模式和对象结构型模式两种,前者类之间的耦合度比后者高,且要求程序员了解现有组件库中的相关组件的内部结构,所以应用相对较少些。
适配器模式(Adapter)包含以下主要角色。
目标(Target)接口:当前系统业务所期待的接口,它可以是抽象类或接口。
适配者(Adaptee)类:它是被访问和适配的现存组件库中的组件接口。
适配器(Adapter)类:它是一个转换器,通过继承或引用适配者的对象,把适配者接口转换成目标接口,让客户按目标接口的格式访问适配者。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
例题:设计一个可以模拟各种动物行为的机器人,在机器人中定义了一系列方法,如机器人叫喊方法cry()、机器人移动方法move()等。如果希望在不修改已有代码的基础上使得机器人能够像狗一样叫bark(),像狗一样跑run(),使用适配器模式设计类图和代码

在这里插入图片描述

7、桥接模式(Bridge)

桥接模式就是把事物和其具体实现分开,使他们可以各自独立的变化。
桥接的用意是:将抽象化与实现化解耦,使得二者可以独立变化,像我们常用的JDBC桥DriverManager一样,JDBC进行连接数据库的时候,在各个数据库之间进行切换,基本不需要动太多的代码,甚至丝毫不用动,原因就是JDBC提供统一接口,每个数据库提供各自的实现,用一个叫做数据库驱动的程序来桥接就行了。

在这里插入图片描述

在这里插入图片描述

例题:
在这里插入图片描述
在这里插入图片描述

8、组合模式(Composite)

一种将对象组合成树状的层次结构的模式,用来表示“整体-部分”的关系,使用户对单个对象和组合对象具有一致的访问性
(1) 透明方式
在该方式中,由于抽象构件声明了所有子类中的全部方法,所以客户端无须区别树叶对象和树枝对象,对客户端来说是透明的。但其缺点是:树叶构件本来没有 Add()、Remove() 及 GetChild() 方法,却要实现它们(空实现或抛异常),这样会带来一些安全性问题。
(2) 安全方式
在该方式中,将管理子构件的方法移到树枝构件中,抽象构件和树叶构件没有对子对象的管理方法,这样就避免了上一种方式的安全性问题,但由于叶子和分支有不同的接口,客户端在调用时要知道树叶对象和树枝对象的存在,所以失去了透明性。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

例题:用组合模式实现算术表达式:一个算术表达式包括操作数、操作符和另一个操作数,其中,一个操作符也可以是操作数、操作符(最基本的操作符是加减乘除这4个)和另一个操作数。设计类图,编写代码

在这里插入图片描述

9、装饰(器)模式(Decorator)

在不改变现有对象结构的情况下,动态地给该对象增加一些职责(即增加其额外功能)

在这里插入图片描述
在这里插入图片描述
例题:变形金刚在变形之前是一辆汽车,它可以在陆地上移动。当它变成机器人之后除了能够在陆地上移动之外,还可以说话;如果需要,它还可以变成飞机,除了在陆地上移动还可以在天空中飞翔。使用装饰模式设计与实现变形金刚的功能。

在这里插入图片描述

10、外观模式(Facade)

隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。它向现有的系统添加一个接口,来隐藏系统的复杂性。
这种模式涉及到一个单一的类,该类提供了客户端请求的简化方法和对现有系统类方法的委托调用。

在这里插入图片描述
在这里插入图片描述
例题:
在这里插入图片描述
在这里插入图片描述

11、享元模式(Flyweight)

运用共享技术来有效地支持大量细粒度对象的复用。它通过共享已经存在的对象来大幅度减少需要创建的对象数量、避免大量相似类的开销,从而提高系统资源的利用率。

内部状态指对象共享出来的信息,存储在享元信息内部,并且不回随环境的改变而改变;
外部状态指对象得以依赖的一个标记,随环境的改变而改变,不可共享。

比如,连接池中的连接对象,保存在连接对象中的用户名、密码、连接URL等信息,在创建对象的时候就设置好了,不会随环境的改变而改变,这些为内部状态。而当每个连接要被回收利用时,我们需要将它标记为可用状态,这些为外部状态。
在这里插入图片描述
在这里插入图片描述
例题:在这里插入图片描述
在这里插入图片描述

12、代理模式(Proxy)

为其他对象提供一种代理以控制对这个对象的访问。
在代码中,一般代理会被理解为代码增强,实际上就是在原代码逻辑前后增加一些代码逻辑,而使调用者无感知。

根据代理的创建时期,代理模式分为静态代理和动态代理。

  • 静态:由程序员创建代理类或特定工具自动生成源代码再对其编译,在程序运行前代理类的 .class 文件就已经存在了。
  • 动态:在程序运行时,运用反射机制动态创建而成

在这里插入图片描述
在这里插入图片描述
例题:在一个论坛中已注册用户和游客的权限不同,已注册的用户拥有发帖、修改自己的注册信息、修改自己的帖子等功能;而游客只能看到别人发的帖子,没有其他权限。使用代理模式来设计该权限管理模块。设计类图,写代码。
在这里插入图片描述

三、行为型(十一种)

这些设计模式特别关注对象之间的通信

13、解释器模式(Interpreter)

给定一个语言,定义它的文法表示,并定义一个解释器,这个解释器使用该标识来解释语言中的句子。

在这里插入图片描述

在这里插入图片描述

14、模板方法模式(Template Method)

定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。

在这里插入图片描述
在这里插入图片描述

例题:某个楼盘构建一片别墅区,区内别墅设计了3种户型:1) 地面为实木地板,墙面为木制墙,大门是木制门,窗户朝北朝南,花园设计为欧式风格;2)地面为大理石,墙面为花岗岩,大门是铁门,窗户朝东朝南,花园设计为中式风格;3)地面为水泥地,墙面为玻璃墙,大门是防盗门,窗户朝东朝西,花园设计为美式风格。该楼盘拥有户型1的别墅20套,户型2的别墅30套,户型3的别墅15套
请用模板模式实现,设计类图,实现代码

在这里插入图片描述

15、职责链/责任链模式(Chain of Responsibility)

使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。但是发出者并不清楚到底最终那个对象会处理该请求,所以,责任链模式可以实现,在隐瞒客户端的情况下,对系统进行动态的调整。

在这里插入图片描述

在这里插入图片描述

例题:用户可以到银行存钱,有客户要存取人民币,也有客户亚要存取美元、日元、欧元这三种外币,未来也有可能该银行会支持更多币种的存取,或者不支持现有某一种币种的存取,请建立职责链来完成银行存取款功能。

在这里插入图片描述

16、命令模式(Command)

将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。这样两者之间通过命令对象进行沟通,这样方便将命令对象进行储存、传递、调用、增加与管理。

在这里插入图片描述
在这里插入图片描述

例题:用命令模式实现:用户(User )通过智能电器遥控(Controller),控制各种家电,包括电灯(Light),冰箱(Fridge)和电视机(TV),发送命令(Command),不同的电器接收到后执行命令(excuteCommand),设计类图,编写代码。
在这里插入图片描述

17、迭代器模式(Iterator)

提供一种方法顺序访问一个聚合对象中各个元素,而又不需暴露该对象的内部表示。

在这里插入图片描述
在这里插入图片描述

例题:电视机遥控器就是一个迭代器的实例,通过它可以实现对电视机频道集合的遍历操作,本实例我们将模拟电视机遥控器的实现。

在这里插入图片描述

18、中介模式(Mediator)

定义一个中介对象来封装一系列对象之间的交互,使原有对象之间的耦合松散,且可以独立地改变它们之间的交互。中介者模式又叫调停模式,它是迪米特法则的典型应用。

在这里插入图片描述
在这里插入图片描述

例题:某论坛系统欲增加一个虚拟聊天室,允许论坛会员通过该聊天室进行信息交流,普通会员(CommonMember)可以给其他会员发送文本信息,钻石会员(DiamondMember)既可以给其他会员发送文本信息,还可以发送图片信息。该聊天室可以对不雅字符进行过滤,如“日”等字符;还可以对发送的图片大小进行控制。用中介者模式设计该虚拟聊天室。设计类图(必做),实现代码(选做)

在这里插入图片描述

19、备忘录模式(Memento)

在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。
备忘录模式使用三个类 Memento、Originator 和 CareTaker。Memento 包含了要被恢复的对象的状态。Originator 创建并在 Memento 对象中存储状态。Caretaker 对象负责从 Memento 中恢复对象的状态。

在这里插入图片描述
在这里插入图片描述

例题:某系统提供了用户信息操作模块,用户可以修改自己的各项信息(account、password、phoneNo)。为了使操作过程更加人性化,现使用备忘录模式对系统进行改进,使得用户在进行了错误操作之后可以恢复到操作之前的状态。设计类图,实现代码。

在这里插入图片描述

20、观察者模式(Observer)

指多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。这种模式有时又称作发布-订阅模式、模型-视图模式。

在这里插入图片描述
在这里插入图片描述

21、状态模式(State)

对有状态的对象,把复杂的“判断逻辑”提取到不同的状态对象中,允许状态对象在其内部状态发生改变时改变其行为。

在这里插入图片描述
在这里插入图片描述
例题:在这里插入图片描述

在这里插入图片描述

22、策略模式(Strategy)

定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户。

在这里插入图片描述
在这里插入图片描述
例题:某系统提供了一个用于对数组数据进行操作的类,该类封装了对数组的常见操作,如查找数组元素、对数组元素进行排序等。现以排序操作为例,使用策略模式设计该数组操作类,使得客户端可以动态地更换排序算法,可以根据需要选择冒泡排序或选择排序或插入排序,也能够灵活地增加新的排序算法。画出类图,实现代码(可以不把具体的排序代码写进去,只需要在屏幕输出一句话:“使用XX排序法”即可)
在这里插入图片描述

23、访问者模式(Visitor)

将作用于某种数据结构中的各元素的操作分离出来封装成独立的类,使其在不改变数据结构的前提下可以添加作用于这些元素的新的操作,为数据结构中的每个元素提供多种访问方式。它将对数据的操作与数据结构进行分离,是行为类模式中最复杂的一种模式。

在这里插入图片描述

在这里插入图片描述
例题:顾客在超市中将选择的商品,如苹果、图书等放在购物车中,然后到收银员处付款。在购物过程中,顾客需要对这些商品进行访问,以便确认这些商品的质量,之后收银员计算价格时也需要访问购物车内顾客所选择的商品。此时,购物车作为一个ObjectStructure(对象结构)用于存储各种类型的商品,而顾客和收银员作为访问这些商品的访问者,他们需要对商品进行检查和计价。不同类型的商品其访问形式也可能不同,如苹果需要过秤之后再计价,而图书不需要。使用访问者模式来设计该购物过程。设计类图(必做),实现代码(选做)

在这里插入图片描述

软件设计师备考(四)——UML设计模式 软件设计师备考(四)——UML设计模式一、创建型设计模式1、Abstract Factory(抽象工厂) 一、创建型设计模式 1、Abstract Factory(抽象工厂) 阅读详情

相关推荐

类与类的表示关系

一 关联关系 关联关系是对象之间的一种引用关系,用于表示一类对象与另一类对象之间的联系,如老师和学生、师傅和徒弟、丈夫和妻子等。关联关系是类与类之间最常用的一种关系,分为一般关联关系、聚合关系和组合关系。先介绍一般关联。 关联又可以分为单向关联,双向关联,自关联。 1 单向关联 在UML类图中单向关联用一个带箭头的实线表示。上图表示每个顾客都有一个地址,这通过让Customer类持有一个类型为Address的成员变量类实现。 2 双向关联 从上图中很容易看出,所谓的双向关联就是双方各自持有对方类型的成员

实践求真知 2537

【UML】-- 类图练习题含答案

一、练习一 学生包括本科生、研究生两种; 研究生的一部分利用课余时间担任助教; 教师包括助教、讲师和教授三种; 一名助教可以为一位讲师或一位教授助课,一位讲师只能有一名助教,一位教授最多可以有5名助教。 二、练习二 请按下述要求画出类图。 (1)一家公司包含许多部门,通过部门名称唯一的确定一个部门,每个部门由一名经理主管,也有的经理不管理任何部门; (2)每个部门生产多种产品,每种产品仅由一个部门生产; (3)该公司有许多员工为之工作,员工又分为经理与工人两类; (4)每.

个人博客 5万+

设计模式概述

UML介绍:http://blog.youkuaiyun.com/jiuqiyuliang/article/details/8552956 java23种设计模式:http://blog.sina.com.cn/s/blog_5d4d130a0100hlix.html设计模式基本原则最终目的:高内聚,低耦合 1) 开放封闭原则 (OCP,Open For Extension, Closed For Mo

sjtu_chenchen的专栏 579

设计模式之UML详解

1、什么是UML?   UML是统一建模语言,是一种可视化的面向对象建模语言,是一种用来对真实世界物理进行建模的标准标记,用图形方式表现典型的面向对象系统的整个结构。它的作用域不局限于支持面向对象的分析与设计,还支持从需求分析开始的软件开发的全过程。   UML的概念包括了UML语义(Semantics)和UML表示符(Notation)两个部分。UML语义定义了静态模型和动态模型。结构模型强调系统的对象结构,入对象的类、接口、属性和关系;行为模型关注的是系统对象的行为动作,如对象的方法、交互、协作和状态。

qq_48238787的博客 6747

23种设计模式与UML类图实战指南

设计模式作为软件开发中的重要概念,其重要性不言而喻。它提供了一种在一定上下文中针对常见问题的标准解决方案,能够帮助开发者避免重蹈覆辙,提高代码质量和开发效率。设计模式是面向对象软件设计中,可复用的、经过验证的最佳实践。它们是经验丰富的开发人员,在面对重复出现的设计问题时,总结出的解决方案模板。通过学习和运用设计模式,我们能够创建出更加灵活、可维护和可扩展的软件系统。统一建模语言(UML)类图是面向对象分析和设计中的一种静态结构图,用于可视化系统的蓝图。

weixin_29903713的博客 1192

Calibre LVS效率翻倍秘籍:用Hierarchical Flow处理亿级晶体管设计的5个关键阶段

本文详细解析了如何利用Hierarchical Flow技术提升Calibre LVS在亿级晶体管SoC设计中的验证效率。通过五个关键阶段的分层验证流程,包括顶层抽象验证、模块级独立验证等,可显著降低内存占用40-60%,缩短迭代周期50-70%,特别适用于SMIC等先进工艺节点。文章还分享了算力资源优化、并行化处理等实战技巧,帮助工程师应对大规模芯片验证挑战。

sam99的博客 769

23种设计模式UML图

设计模式UML图 创建型模式(5种):工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式(7种):适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式(11种):策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

是小光a~ 9132

多臂老虎机——入门强化学习

多臂老虎机(Multi-Armed Bandit,MAB)问题是强化学习的经典入门例子,也是理解探索与利用(exploration-exploitation)平衡的重要案例。

qq_56683019的博客 2460

23种设计模式UML类图图解

目录 一 、类图的表示二、创建者模式1、单例模式2、简单工厂模式3、工厂方法模式4、抽象工厂模式5、原型模式6、建造者模式 三、结构型模式1、代理模式2、适配器模式3、装饰者模式4、桥接模式5、外观模式6、组合模式7、享元模式 四、行为型模式1、...

qq_40274514的博客 3万+

LBM模式学习·保姆级安装及初步使用教程

在学习LBM的过程中,我感觉可供参考的材料较为有限,对于一个独立学习LBM模式的初学者非常不友好(我就是这个初学者哈哈),因此萌生了写一篇保姆级的LBM模式教程,并将我踩过的坑一一指出,有助于后来者更快地上手该模式,而非半途而废。

weixin_42762673的博客 1万+

CiteSpace关键词聚类图谱含义详细解析

CiteSpace关键词聚类图谱含义详细解析 回顾上一次推文:CiteSpace关键词共现图谱含义详细解析 其中有一句: 当你人工已经可以很容易的进行归纳后,就不需要再利用CiteSpace聚类功能啦。 我们来看一下上次推文做出来的关键词共现图谱: 人工不好归纳!那怎么聚类呢? 此时便可使用CiteSpace的聚类功能啦! 如下所示:我们可以清晰地看到上边的关键词共现网络聚成了一个个不规则区域...

qq_39974284的博客 6万+

UML类图及设计模式简介

1、UML——Unified modeling language UML (统一建模语言),是一种用于软件系统 分析和设计的语言工具,它用于帮助软 件开发人员进行思考和记录思路的结果。 说明: 类图是描述类与类之间的关系的,是UML图中最核心的 用于描述系统中的类(对象)本身的组成和类(对象)之间的各种静态关系。 类之间的关系:依赖、泛化(继承)、实现、关联、聚合与组合 ...

qq_30122883的博客 1383

SICK LMS111激光雷达数据解析实战:从原始帧到三维点云的完整流程

本文详细解析了SICK LMS111激光雷达从原始数据帧到三维点云的完整处理流程,包括数据帧结构解析、坐标转换、点云可视化及性能优化技巧。通过实战代码示例,展示了如何高效处理激光雷达数据,并应用于动态物体检测、地面分割等工业场景,为AGV和服务机器人开发者提供实用指南。

garlic的博客 769

23种经典设计模式UML类图汇总

23种经典设计模式UML类图汇总

arhaiyun的专栏 3017

Image Sensor卷帘曝光(Rolling Shutter)基本原理以及对曝光行的通俗理解

由于CMOS sensor的曝光方式是一行一行的方式进行的,任何一个pixel的曝光时间是一样的,也就是同一行上的每个pixel的曝光开始点和曝光的时间都是一模一样的,所以同一行的所有点所接受到的能量是一样的,而在不同行之间虽然曝光时间都是一样的,但是曝光的开始点是不同的,所以不同行之间所接受到的能量是不一定相同的。至此完成了这一行的曝光。还是以桶装水为比喻: 排成一行的桶(桶的数量和每个桶的大小确定),每一曝光行为单位的时间内每一个桶加水都是一样,需要多少个曝光行才能使的所有水桶加起来的水达到1L。

大熊 3929

从 ST22 到根因定位:ABAP Dumps 全景排查指南(含典型 Dump 案例、修复套路与云时代实践)

本文系统介绍了SAP系统中ABAP短转储(Dump)的分析方法。首先指出短转储是程序运行时无法处理的错误导致系统强制终止执行。文章详细解析了短转储报告各区块的作用:从概述性的Short Text和What happened,到核心的Error Analysis和Source Code Extract,再到关键的系统字段Contents of system fields和调用栈Active Calls/Events。针对不同场景提供了排查建议:客户代码应建立可控边界,标准对象优先查阅SAP Notes。最后推

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 486

23种设计模式(UML类图)

UML类图 1.介绍 统一建模语言,是一种用于软件系统分析和设计的语言工具,它用于帮助软件开发人员进行思考和记录思路的结果 2.使用工具 虽然IDEA有自动生成UML类图,但不能画类图 这里我使用的是**plantUML **,他不仅可以画类图,还有其他的UML图他也可以画 ​ 下载:在idea中setting中找到 plugins 搜索PlantUML下载安装,重启idea即可 使用:右键新建一个plantUML文件 ​语法:语法比较简单,这里引用一下别人的博客:https://www.cnbl

qq_29880061的博客 1473

星敏感器:卫星姿态测量的“星空导航仪”

在卫星、航天器和深空探测器的姿态控制系统中,星敏感器(Star Tracker) 是最精确的姿态测量设备之一。它通过识别恒星的位置,计算出航天器在惯性空间中的三轴姿态,精度可达 角秒级(arcsecond),是许多高精度任务(如遥感、天文观测、深空探测)的核心传感器。

ScilogyHunter的博客 3698

二、UML类图、设计模式概述

UML基本介绍 (1) UML— Unified modeling language UML (统一 建模语言),是一种用于软件系统分析和设计的语言工具,它用于帮助软件开发人员进行思考和记录思路的结果 (2) UML 本身是一套符号的规定,就像数学符号和化学符号一样,这些符号用于描述软件模型中的各个元素和他们之间的关系,比如类、接口、实现、泛化、依赖、组合、聚合等,如图: UML 图: 画UML图与写文章差不多,都是把自己的思想描述给别人看,关键在于思路和条理,UML图分类: (1)用例图(use ca

Cookie__C的博客 621

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

设计模式之UML类图

设计模式之UML类图 UML类图可以很清晰的表达程序的设计,在程序开发中各种类存在不同的依赖关系,在UML中使用不同的箭头来表达类之间的关系,例如依赖关系、关联关系、泛化关系、实现关系、组合关系和聚合关系*。 可以使用StartUML工具或者Rose工具来画类图,但是已经2019年啦。我们有强大的IDEA开发工具,我们可以安装插件来画类图,下面就是一个类图...

疾风知劲草,智者必怀仁 534

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

UML——类图(二)

强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan 最近在学习设计模式,设计模式共23个,现在还是小菜鸟的我看了那些代码根本不懂是什么意思,还好,每个设计模式都对应着相应的类图,啊哈,看了图之后再去理解设计模式是解决什么问题的果然简单了很多,类图是UML图应用的最多的图,在看刘伟老师的csdn时候看到一段话,很...

至尊宝 2万+

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

设计模式概述及UML的类图

1.设计模式概述 1)简介 设计模式是面向对象设计中反复出现的问题的解决方案。这个术语的含义还存有争议。算法不是设计模式,因为算法致力于解决问题而非设计问 题。设计模式通常描述了一组相互紧密作用的类与对象。设计模式提供一种讨论软件设计的公共语言,使得熟练设计者的设计经验可以被初学者 和其他设计者掌握。设计模式还为软件重构提供了目标。 2)历史 肯特·贝克和沃德·坎宁安在1987年利用克里斯托佛·亚历山大在建筑设计领域里的思想开发了设计模式并把此思想应用在Smalltalk中的图形用户接 口的生

hello world ! 435

23种设计模式UML类图

设计模式总概况: 一、设计原则 1、开闭原则(Open Close Principle) 开闭原则的意思是:对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。简言之,是为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,我们需要使用接口和抽象类,后面的具体设计中我们会提到这点。 2、里氏代换原则(Liskov Substitution Princ...

u010679043的博客 843

转载:23种常用设计模式的UML类图

转载至:https://www.cnblogs.com/zytrue/p/8484806.html 23种常用设计模式的UML类图 本文UML类图参考《Head First 设计模式》(源码)与《设计模式:可复用面向对象软件的基础》(源码)两书中介绍的设计模式与UML图。 整理常用设计模式的类图,一方面是为了练习UML,另一方面可以重新思考设计模式。当然,整理完...

weixin_30896825的博客 481

23种设计模式模式详解 Java UML类图小知识(一)

23种设计模式模式详解 Java UML类图小知识(一)设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。 使用设计模式的好处:代码的可重用性、可扩展性,可阅读性,保证代码的可靠。(代码要优雅)关于相关源码可以在GitHub上下载: https://github.com/rickey17/design 设计模式的6大原则 设计模式分类 创

rickey17的博客 8262
上一篇: qtp11安装及入门
下一篇: Git的下载、安装、配置、使用、卸载
jiyuzzz
博客等级 码龄7年 132粉丝 33原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值