设计模式
文章平均质量分 79
Forest_1010
笔记记笔记
展开
-
单例模式4种实现方式C++
假设在reorder的情况下:线程1走到赋值,但还没调用构造的阶段,而线程2进来判断m_instance,此时它已经被复制 所以不为空,这时候线程2就直接返回m_instance,但事实上它还没构造出来……因为编译器优化,指令的执行顺序可能reorder(CPU执行指令的层次,而且线程是在指令层次抢时间片的) ,可能变成这样:分配内存->赋值->调用构造(理想应该是:分配内存->调用构造->赋值)这样,编译时在编译的时候就知道,这个变量的整个赋值过程不能reorder,需要按照常规的流程走。...原创 2022-08-21 11:41:39 · 1103 阅读 · 0 评论 -
设计模式(6) 观察者模式
01 概述观察者模式是用于建立一种对象与对象之间的依赖关系,定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并自动更新。1)抽象主题(Subject):它把所有观察者对象的引用保存到一个聚集里,每个主题都可以有任何数量的观察者。抽象主题提供一个接口,可以增加和删除观察者对象。2)具体主题(Concrete Subject):将有关状态存入具体观察者对象;在具体主题内部状态改变时,给所有登记过的观察者发出通知。3)抽象观察者(Observer):为所原创 2020-12-24 23:54:35 · 186 阅读 · 0 评论 -
设计模式(5) 代理模式
代理模式:一个类代表另一个类的功能,为其他对象提供一种代理以控制对这个对象的访问。在直接访问对象时带来的问题,比如说:要访问的对象在远程的机器上。在面向对象系统中,有些对象由于某些原因(比如对象创建开销很大,或者某些操作需要安全控制,或者需要进程外的访问),直接访问会给使用者或者系统结构带来很多麻烦,我们可以在访问此对象时加上一个对此对象的访问层。#include<iostream>#include<string>using namespace std;class.原创 2020-12-15 23:23:51 · 98 阅读 · 0 评论 -
设计模式(4) 单例模式
01 概述定义:指一个类只有一个实例,且该类能自行创建这个实例。例如,Windows 中只能打开一个任务管理器,这样可以避免因打开多个任务管理器窗口而造成内存资源的浪费,或出现各个窗口显示内容的不一致等错误。单例模式的特点:单例类只有一个实例对象;该单例对象必须由单例类自行创建;单例类对外提供一个访问该单例的全局访问点。02 实现实现单例模式的步骤:构造函数私有化增加静态的私有的当前类提供一个静态的对外的接口,可以让对象获得单例对象#include<iostream&原创 2020-12-15 23:08:33 · 97 阅读 · 0 评论 -
设计模式(3) 对象创建型模式
01 创建型模式创建型模式的主要关注点是“怎样创建对象?”,它的主要特点是“将对象的创建与使用分离”。这样可以降低系统的耦合度,使用者不需要关注对象的创建细节,对象的创建由相关的工厂来完成。就像我们去商场购买商品时,不需要知道商品是怎么生产出来一样,因为它们由专门的厂商生产。创建型模式分为以下几种:单例(Singleton)模式:某个类只能生成一个实例,该类提供了一个全局访问点供外部获取该实例,其拓展是有限多例模式。原型(Prototype)模式:将一个对象作为原型,通过对其进行复制而克隆出多个原创 2020-12-15 01:14:26 · 514 阅读 · 0 评论 -
设计模式(2) 面向对象的设计原则
01 开闭原则对扩展开放,对修改关闭,增加功能是通过增加代码来实现,而不是去修改源代码#include<iostream>#include<string>using namespace std;//计算器类class Caculator{public: Caculator(int a,int b,string m_operator) { this->m_A=a; this->m_B=b; this->m_operator=m_oper原创 2020-12-12 18:00:19 · 360 阅读 · 0 评论 -
设计模式(1) 概述
01 什么是设计模式设计模式是在特定环境下人们解决某类重复出现问题的一套成功或有效的解决方案。GoF将设计模式引入软件工程领域,标志着软件模式的诞生。软件设计模式是指在一定环境下,用固定套路解决问题。设计模式有助于更加深入的理解面向对象思想。设计模式的基础是:多态。学完可能会了解以下知识:1)如何将代码分散在几个不同的类中2)为什么要有接口3)何谓针对抽象编程4)何时不应该使用继承5)如何不修改源代码增加新功能6)更好的阅读和理解现有类库与其它系统中的源代码02 软件设计模式的原创 2020-12-12 15:08:22 · 103 阅读 · 0 评论 -
UML 统一建模语言
01 概述建模原则(1)选择建立什么样的模型对如何发现和解决问题具有重要的影响;(2)每个模型可以有多种表达式,使用者的身份和使用的原因是评判模型好坏的关键;(3)最好的模型总能够切合实际。软件建模的实现过程:软件建模的作用是把源于现实世界的问题转化为计算机可以理解和实现的过程。本文所用软件:StarUML,所有关系图片都是该软件所绘。02 UMLUML(United Modeling Language)统一建模语言,是一种基于面向对象的可视化建模语言;UML采用了一组形象化的图形(原创 2020-11-22 23:18:14 · 207 阅读 · 0 评论