自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 资源 (7)
  • 收藏
  • 关注

原创 设计模式之类之间的关系和六大原则

设计模式之类之间的关系和六大原则1 类之间的关系1.1 继承关系1.2 实现关系1.3 依赖关系1.4 关联关系1.5 聚合关系1.6 组合关系1.7 总结2 六大原则2.1 单一职责原则2.2 开放-封闭原则2.3 依赖倒转原则2.4 里氏代换原则2.5 接口隔离原则2.6 迪米特法则3 各种设计模式1 类之间的关系类与类之间的关系大概有6种,要看懂UML图,首先需要了解这几种关系。1.1...

2018-10-27 08:46:17 3761 1

原创 设计模式之中介者模式(C++)

设计模式之中介者模式中介者模式,用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显示地互相引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。该模式很好理解,其UML图如下:Mediator中每个交互者的引用,在Mediator内部封装了各种类之间的交互。至于那个类和那个类交合则有具体的需求来决定。示例代码如下:// MediatorModel.h文件#pragma on...

2018-10-27 08:33:39 1074

原创 设计模式之享元模式(C++)

设计模式之享元模式享元模式,运用共享技术有效地支持大量细粒度的对象。面向对象技术可以很好地解决一些灵活性或扩展性问题,但在很多情况下需要在系统中增加类和对象的个数。当对象数量太多时,将导致运行代价过高,带来性能下降等问题。享元模式正式为了解决这依赖问题而诞生的。享元模式通过共享技术实现相同或相似对象的重用,示意图如下(我们可以公用一个Hello world对象,其中字符串“Hello world...

2018-10-27 08:33:34 396

原创 设计模式之解释器模式(C++)

设计模式之解释器模式解释器模式,给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。解释器模式解决的问题是,如果一种特定类型的问题发生的频率足够高,那么可能就只得将该问题的各个示例表述为一个简单语言中的句子。这样就可以构建一个解释器,该解释器通过解释这些句子来解决问题。其UML图如下:在解释器模式中每一种表达式对应一种表达式解释类,比如Termi...

2018-10-27 08:33:23 1460

原创 设计模式之访问者模式(C++)

设计模式之访问者模式访问者模式,表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。访问者模式适用于数据结构相对稳定的系统。它把数据结构和作用于结构上的操作之间耦合解脱开,使得操作几何可以相对自由地演化。访问者模式的目的使要把处理从数据结构中分离出来。很多系统可以按照算法和数据结构分开,如果这样的系统有比较稳定的数据结构,又有易于变化的算法的...

2018-10-27 08:33:16 1622

原创 设计模式之责任链模式(C++)

设计模式之责任链模式责任链模式,使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这个对象练成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。该模式很好理解,其UML图如下:每个ConcreteHandler都有一定的请求处理能力,当自己处理不了的时候就把请求转移给自己的后继者。所以每个ConcreteHandler都有一个Handler的引用。示例代码如下...

2018-10-26 08:13:55 570

原创 设计模式之命令模式(C++)

设计模式之命令模式命令模式,将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。其UML类图如下:该模式主要是为了隔离请求和实际执行者之间解除。就是解耦和,所有的请求统一有一个类负责,而该类负责管理这些请求(添加请求、撤销请求之类的)。上图种Invoker负责接受和管理各种命令。然后有Invoker统一像Receiver发起请求。...

2018-10-26 08:13:31 3631 2

原创 设计模式之桥接模式(C++)

设计模式之桥接模式桥接模式,将抽象部分与它的实现部分分离,使它们都可以独立地变化。这里说的实现分离,并不是说然抽象类与派生类分离,这没有任何意义。实现指的是抽象类和它的派生类用来实现自己的对象。其UML图如下:结合上图理解一下其定义。抽象部分指的是Abstraction或者RefinedAbstraction。实现部分指的是Implementor。以为抽象部分得实现有多种变化,为了减少耦合,...

2018-10-26 08:13:18 2508 1

原创 设计模式之单例模式(C++)

设计模式之单例模式保证一个类仅有一个实例,并提供一个访问他的全局访问点。通常我们可以让一个全局变量使得一个对象被访问,但它不能防止你实例化多个对象。一个最好的办法就是,让类自身负责保存它的唯一实例。这个类可以保证没有其他实例可以被创建,并且可以提供一个访问该实例的接口。其UML图如下:其示例代码如下:// SingeltonModel.h文件#pragma once// 线程不安全类...

2018-10-26 08:12:58 3177

原创 设计模式之组合模式(C++)

设计模式之组合模式组合模式,将对象组合成属性结构以表示‘部分-整体’的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。其UML图如下:一个组织有很多子组织,而无论子组织是单独一个部门或是一个分组织。该组织都希望把它们当成一样的子组织来管理。举个例子吧,就拿公司来说吧,一个公司总部为了方便管理希望把分公司当成一个部门来管理就行了。比如公司要发奖金了,总公司只用通知自己的所有部门...

2018-10-26 08:12:49 3900 2

原创 设计模式之备忘录模式(C++)

设计模式之备忘录模式备忘录,在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。该模式很好理解,其UML图如下:在Originator中提供了创建Memento的接口,具体要保存什么样的内容,则根据需求来定。而Caretaker则是负责管理Memento。而保存的内容的具体的组织方式什么的都封装在Memento中了。这样做耦合...

2018-10-26 08:12:40 430

原创 设计模式之适配器模式(C++)

设计模式之适配器模式适配器模式,将一个类的借口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。适配器模式主要解决的是数据和行为都正确,但接口不符合的情况。该模式很好理解,其UML图如下:示例代码如下:// AdapterModel.h文件#pragma once#include <iostream>class Ta...

2018-10-26 08:12:30 343

原创 设计模式之状态模式(C++)

设计模式之状态模式状态模式,当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了类本身。状态模式主要解决的时当控制一个对象状态转换的条件表达式过于复杂时的情况。把状态的判断逻辑转移到到表示不同状态的一系列类当中,可以把复杂的判断逻辑简化。其UML图如下:在以上UML图中,Context中有一个状态的引用(C++中是指针),当该状态发生变化时,Context中的状态不同,响应的操...

2018-10-26 08:12:21 1020

原创 设计模式之迭代器模式(C++)

设计模式之迭代器模式迭代器模式,提供一种方法顺序访问一个聚合对象中各个元素,而不暴露该对象的内部表示。该模式很好理解,C++中的迭代器应该都用过,和那个差不多。其UML图如下:ConcreteIterator内部有一个聚合对象的引用(指针),而ConcreteAggregate依赖于ConcreteIterator。以前向链表为例,示例代码如下:// IteratorModel.h文件#...

2018-10-26 08:11:36 303

原创 设计模式之抽象工厂模式(C++)

设计模式之抽象工厂模式抽象工厂模式,提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。其UML图如下:结合上图我们来理解一下抽象工厂模式的定义。提供一个创建一些列相关或相互依赖对象的接口,而无需指定它们具体的类。在上图中一系列相互依赖或相关的对象可以理解为ProductA,ProductB,也可以有ProductC、ProductD等,这些是一系列类,要创建这一系列对象。而...

2018-10-26 08:11:20 7419 2

原创 设计模式之观察者模式(C++)

设计模式之观察者模式观察者模式定义了一种一对多的依赖关系,让多个观察者同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。其UML图如下:在ConcretSubject内部有一个Observer的列表,当Subject的状态发生改变时,会通知列表内的所有的观察者。而观察者都实现了统一的接口,而不同的观察者在该接口中做出了不同的响应。其示例代码如...

2018-10-25 15:41:30 723

原创 设计模式之建造者模式(C++)

设计模式之建造者模式建造者模式,将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。其UML图如下:简单理解就是Builder中定义了创建Product各个部分的接口。ConcreteBuilder中具体实现了创建Product中的各个部分的接口,就是具体的建造者。Director是根据用户的需求构建Product的(具体怎么构建,怎么把Product中的各个部件构建...

2018-10-25 15:38:57 833

原创 设计模式之外观模式(C++)

设计模式之外观模式外观模式主要是为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得该子系统更加容易使用。说白了就是一堆系统或类实现了些复杂的功能,然后为了方便使用,又新建了一个类把这些类实现的功能封装起来了。该模式不难理解。其UML图如下:在Facade类提供了一堆调用该子系统功能得接口。而该接口内部具体怎么实现是根据需求来得。其示例代码如下:// Facade...

2018-10-25 15:36:30 349

原创 设计模式之模板方法模式(C++)

设计模式之模板方法模式模板方法模式,定义一个操作中的算法的股价,而将一些步骤延迟到了子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。说白了就是有一个算法有很多部分,这个算法在基类中已经定义好了。而算法中的各个部分都写成各个成员函数了。然后在子类中可以覆盖这些成员函数,从而实现不同的算法。其UML图如下:在AbstractClass中有个TemplateMet...

2018-10-25 15:34:36 800

原创 设计模式之原型模式(C++)

设计模式之原型模式原型模式是用原型实例指定创建兑现的种类,并且通过拷贝这些原型创建新的对象。原型模式说白了其实就是有一个把自己拷贝一下的方法。该模式很好理解,该模式独特地方不是类与类之间的关系,更多的是从语义上理解,只是实现了一个接口而已。其UML图如下:示例代码如下:// PrototypeModel.h文件#pragma once#include <iostream>...

2018-10-25 15:32:51 1970

原创 设计模式之工厂方法模式(C++)

设计模式之工厂方法模式工厂方法模式,定义一个用于创建对象的接口,让子类决定实力化哪一个类。工厂方法使一个类的实例化延迟到其子类。其UML图如下:这里要区分一下工厂方法模式与简单工厂模式的区别。简单工厂模式需要在工厂类中判断要生产什么类型的对象。工厂方法模式则把这部分工作交给了客户端。每一种类对象都有自己的工厂,客户端根据自己的不同需要生成不同工厂,然后在生产自己需要的对象。工厂方法模式相对简...

2018-10-25 15:27:20 384

原创 设计模式之装饰模式(C++)

设计模式之装饰模式装饰模式,动态地给一个对象添加一些额外的职责(不一定重要的功能,只是偶然一次执行),就增加功能来说,装饰模式比生成子类更为灵活。其UML图如下:ConcreteComponent定义了一个具体的对象,ConcreteDecorator类是用来装饰ConcreteComponent的。在Decorator类内由一个Component的引用实际是指向ConcreteCompon...

2018-10-25 15:20:58 343

原创 设计模式之策略模式(C++)

设计模式之策略模式策略模式定义算法家族,分别封装。它们之间可以相互替换,让算法变化,不会影响到用户。优点:适合类中的成员方法为主,算法经常变动;简单了单元测试(因为每个算法都有自己的类,可以通过自己的接口单独测试)。缺点:客户端需要做出判断。其UML图如下:策略模式和简单工厂模式非常相似。具体来讲有个细微的区别就是,简单工厂模式需要根据传递过来的条件判断创建什么样的对象。而策略模式是直接传...

2018-10-25 15:17:24 404 1

原创 设计模式之简单工厂模式(C++)

设计模式之简单工厂模式(C++)简单工厂模式,主要用于创建对象。新添加类时,不会影响以前的系统代码。核心思想是用一个工厂来根据输入的条件产生不同的类,然后根据不同类的virtual函数得到不同的结果。优点:适用于不同情况创建不同的类时。缺点:客户端必须要知道基类和工厂类,耦合性差。需要根据不同的需求创建不同的类。添加类的时候需要更爱工厂类。以四则运算为例,其UML图如下:在客户端中给简单工...

2018-10-25 15:13:24 1539 1

CSerial类,Modbus协议通信案例

一个串口类,方便串口开发使用。内附一个使用modbus协议通信的案例。详细介绍:https://blog.csdn.net/konglongdanfo1/article/details/80446867

2018-06-19

mfc树形控件

树形控件,详细介绍:https://blog.csdn.net/konglongdanfo1/article/details/80710033

2018-06-19

深入理解计算机系统(第二版)

深入理解计算机系统(第二版),扫描版,附带书签,方便查看。

2018-06-19

windows.核心编程(第五版)

windows.核心编程(第五版),扫描版,附带书签,访问比较方便。

2018-06-17

空空如也

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

TA关注的人

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