自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 收藏
  • 关注

原创 软件设计七大原则

开闭原则、里氏替换原则、依赖倒置原则、单一职责原则、接口隔离原则、迪米特法则和合成复用原则。1、开闭原则开闭原则的含义是:当应用的需求改变时,在不修改软件实体的源代码或者二进制代码的前提下,可以扩展模块的功能,使其满足新的需求。2、里氏替换原则子类可以扩展父类的功能,但不能改变父类原有的功能。也就是说:子类继承父类时,除添加新的方法完成新增功能外,尽量不要重写父类的方法。3、依赖倒置原则依赖倒置原则的原始定义为:高层模块不应该依赖低层模块,两者都应该依赖其抽象;抽象不应该依赖细节,细

2022-04-07 19:24:00 285

原创 设计模式-桥接模式

桥接模式:将抽象部分与实现部分分离,使它们都可以独立变换。以下情形考虑使用桥接模式:当一个对象有多个变化因素的时候,考虑依赖于抽象的实现,而不是具体的实现。当多个变化因素在多个对象间共享时,考虑将这部分变化的部分抽象出来再聚合/合成进来。当一个对象的多个变化因素可以动态变化的时候。桥接(Bridge)模式包含以下主要角色:抽象化(Abstraction)角色:定义抽象类,并包含一个对实现化对象的引用。扩展抽象化(Refined Abstraction)角色:是抽象...

2022-04-06 19:58:43 149

原创 设计模式-适配器模式

适配器模式:将一个类的接口转换成客户希望的另一个接口,使得原本由于接口不兼容而不能一起工作的哪些类可以一起工作。适配器类需要继承或依赖已有的类,实现想要的目标接口。适配器模式(Adapter)包含以下主要角色。目标(Target)接口:当前系统业务所期待的接口,它可以是抽象类或接口。适配者(Adaptee)类:它是被访问和适配的现存组件库中的组件接口。适配器(Adapter)类:它是一个转换器,通过继承或引用适配者的对象,把适配者接口转换成目标接口,让客户按目标接口的格式访问适配者场景如

2022-04-05 19:34:49 675

原创 c\c++ 二级指针的三种内存模型

1、第一种 二级指针做输入内存模型代码如下:​//打印void PrintArray(char** parr,int len){ for(int i=0;i<len;i++) { printf("parr[%d]=%s\n",i,parr[i]); } return;}//排序void SortArray(char** parr,int len){ for (int i=0;i<len-1;i++) { for(int j=i+1;j<len;

2022-04-05 10:41:03 907

原创 设计模式-代理模式

代理模式:由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介。代理模式的主要角色如下。抽象主题(Subject)类:通过接口或抽象类声明真实主题和代理对象实现的业务方法。真实主题(Real Subject)类:实现了抽象主题中的具体业务,是代理对象所代表的真实对象,是最终要引用的对象。代理(Proxy)类:提供了与真实主题相同的接口,其内部含有对真实主题的引用,它可以访问、控制或扩展真实主题的功能。

2022-04-04 17:10:37 300

原创 c\c++ 浅谈指针意义之间接赋值

1、从0级指针到1级指针这个想对容易些 ,话不多说直接上代码如下:int GetValue(int* p){ *p = 8; return 0;}int _tmain(int argc, _TCHAR* argv[]){ int a = 7; cout<<"修改前 a = "<<a<<endl; GetValue(&a); cout<<"修改后 a = "<<a<<endl; system("p

2022-04-04 11:04:12 781

原创 c\c++ 浅谈内存四区

C/C++编译的程序占用的内存分为 代码区、全局区、栈区、堆区。1、代码区用于存放函数体的二进制代码。2、全局区用于存放的数据有:全局变量、静态变量、常量(如字符串常量)。3、栈区用于存放函数的参数值、返回值、局部变量等。栈是一种先进后出的内存结构,由编译器自动分配释放。在程序运行过程中实时加载和释放,因此,局部变量的生存周期为申请到释放该段栈空间。4、堆区用于动态内存分配。堆是一个大容器,它的容量要远远大于栈,但没有栈那样先进后出的顺序。一般由程序员分配和释放,若程序员不释

2022-04-03 21:39:07 452

原创 c\c++数组名的本质

1、一维数组int _tmain(int argc, _TCHAR* argv[]){ int a[5] = {1,2,3,4,5}; //数组名 a代表的是首元素的地址 //数组名取地址 &a 代表的是整个数组的地址 printf(" a = %d\n a+1 = %d\n &a = %d\n &a+1 = %d\n",a,a+1,&a,&a+1); system("pause"); return 0;}运行结果如下:说明:/

2022-04-03 15:53:06 689

原创 c\c++ 剖析数组做参数传递

1、数组名做实参时候代表的是整个数组2、数组名作为形参,代表的就是数组的首地址结论:数组作为参数传递的时候,会退化为指针。C++以性能著称,不会传递整个数组内容。

2022-04-03 13:50:13 390

原创 设计模式-建造者模式

有时需要创建一个复杂的对象,这个复杂对象通常由多个子部件按一定的步骤组合而成。建造者模式创建的是复杂对象,其产品的各个部分经常面临着剧烈的变化,但将它们组合在一起的算法却相对稳定。 创建复杂对象的算法独立于该对象的组成部分以及它们的装配方式,即产品的构建过程和最终的表示是独立的。 建造者(Builder)模式:指将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,这样的设计模式被称为建造者模式。它是将一个复杂的对象分解为多个简单的对象,然...

2022-04-02 21:03:01 323

原创 设计模式-前言

总原则:开闭原则 开闭原则就是说对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,而是要扩展原有代码。为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,我们需要使用接口和抽象类等。总共有如下几种设计模式:创建型模式(Creational Pattern)用于描述“怎样创建对象”,它的主要特点是“将对象的创建与使用分离”单例模式(Singleton Pattern) 简单工厂模式(Simple Factory Pattern) 工厂...

2022-04-02 20:44:07 397

原创 设计模式-单例模式

单例模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点。主要解决:一个全局使用的类频繁地创建与销毁。何时使用:想控制实例数目,节省系统资源的时候。单例模式有 3 个特点:单例类只有一个实例对象;该单例对象必须由单例类自行创建;单例类对外提供一个访问该单例的全局访问点;单例大约有两种实现方法:懒汉与饿汉。懒汉:不到万不得已就不会去实例化类,也就是说在第一次用到类实例的时候才会去实例化。饿汉:在单例类定义的时候就进行实例化。1)提供一个静态的方法返回单例2

2022-04-02 20:30:12 249

原创 设计模式-抽象工厂模式

抽象工厂模式的主要角色如下:抽象工厂(Abstract Factory):提供了创建产品的接口,它包含多个创建产品的方法 newProduct(),可以创建多个不同等级的产品。具体工厂(Concrete Factory):主要是实现抽象工厂中的多个抽象方法,完成具体产品的创建。抽象产品(Product):定义了产品的规范,描述了产品的主要特性和功能,抽象工厂模式有多个抽象产品。具体产品(ConcreteProduct):实现了抽象产品角色所定义的接口,由具体工厂来创建,它 同具体工厂之间

2022-04-01 21:52:38 274

原创 设计模式-工厂方法模式

C++ 工厂方法模式

2022-04-01 21:27:12 117

原创 设计模式-简单工厂模式

简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。例如:北京智博联科技股份有限公司(简称智博联),它生产无损检测仪器,能够生产多种检测仪器如:多通道测桩、低应变、钢筋仪等仪器。公司决定生产哪种仪器,只需要给生产部下通知即可。代码如下:#include "stdafx.h"#include <stdlib.h> #include <iostream> #include <vector>#include<string>using n

2022-04-01 20:52:49 97

原创 设计模式-策略模式

精简版的C++实现的策略模式。

2022-03-31 16:41:56 83

原创 MFC 日志类

只有在程序出问题以后才会知道打一个好的日志有多么重。该日志类是程序exe目录下,以年月日时命名的txt 存储。//log.h 如下:class Log{public: static Log* instance; static Log* GetInstance(); Log(); ~Log(); bool WriteLog(CString strFilePath, CString str); bool WriteLog(CString str);...

2022-03-31 15:43:34 1029

原创 MFC Unicode 下 CString 与char*、CString 转 string 相互转换

c_str()返回一个c风格的字符数组,带有'\0'结束data()返回一个数组,不自动增加‘\0’string s1 = "hello world";const char * p = s1.c_str();unicode 下 CString 转 char*char* Cstring2Char(CString& str){ int n = str.GetLength(); // //获取宽字节字符的大小,大小是按字节计算的 int len = Wide...

2022-03-31 15:17:39 536

原创 MFC 如何从字符串中分离文件名与路径

//得到目录名称CString GetPathName(CString strPathName){ int index = str.ReverseFind('\\'); CString strPath = _T(""); if(index >= 0) { strPath = strPathName.Left(index); } else { index = strPathName.ReverseFind('/'...

2022-03-31 13:59:12 598 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除