现在位置: 首页 > 自动控制 > 文章
  看看我们平时用的开关,同样一个开关他有2种状态:开和关,当她处于不同的状态的时候她的行为是不一样的,比如当她是开着的时候,你按她一下,她就变成了关闭状态,她是关着的时候按她一下,她就变成了开着的状态。看上去就像是改变了它的类一样,其实我们开发者都知道,我们里面用到了if-else,但是当碰到更多状态时就会造成很多很多if-else,设计和维护就相当的复杂,我们将要学习的状态模式就是允许一个对象在其内部...
阅读全文
每个人都要“交个人所得税”,但是“在美国交个人所得税”和“在中国交个人所得税”就有不同的算税方法。 而策略模式就是对算法进行包装,是把使用算法的责任和算法本身分割开来,委派给不同的对象管理。策略模式通常把一个系列的算法包装到一系列的策略类里面,作为一个抽象策略类的子类。用一句话来说,就是:“准备一组算法,并将每一个算法封装起来,使得它们可以互换”。 类图与实例: Context(应用场景): 1、需要使用ConcreteStr...
阅读全文
    我们去银行柜台办业务,一般情况下会开几个个人业务柜台的,你去其中任何一个柜台办理都是可以的。我们的访问者模式可以很好付诸在这个场景中:对于银行柜台来说,他们是不用变化的,就是说今天和明天提供个人业务的柜台是不需要有变化的。而我们作为访问者,今天来银行可能是取消费流水,明天来银行可能是去办理手机银行业务,这些是我们访问者的操作,一直是在变化的。 访问者模式就是表示一个作用于某对...
阅读全文
工厂方法模式不同于简单工厂模式的地方在于工厂方法模式把对象的创建过程放到里子类里。这样工厂父对象和产品父对象一样,可以是抽象类或者接口,只定义相应的规范或操作,不涉及具体的创建或实现细节。 其类图如下: 实例代码为: #pragma once class IProduct { public:     IProduct(void);     virtual ~IProduct(void); }; #pragma once #include "iproduct.h&q...
阅读全文
简单工厂模式按照设计模式类型分的话是属于创建型模式,他是工厂模式中最简单的一种,他不属于GoF 23中设计模式之一,但是是简单实用的。他是有一个工厂对象来决定创建哪一种对象的实例。 实现比较简单,这里我只贴出类图和调用方法: 调用方法: IProduct * simpleFactory::Create(std::string className) {     if( className == "Ipad")         ret...
阅读全文
一、视频监控存储技术发展回顾 (一)前端存储技术 九十年代末,随着网络带宽、计算机处理能力和硬盘存储容量的快速提高以及各种实用视频处理技术的出现,视频监控和存储步入了全数字化的时代。通过中心业务平台进行集中管理和控制,以DVS/DVR为代表的第一代存储技术(前端存储)得到广泛部署。由于架构合理、扩展灵活、层次清晰,网络视频监控给用户带来全新的安防应用体验,从而迅速成为构建新一代网络视频监控系统的主要形式...
阅读全文
桥模式,其作用就是让抽象与实现相分离,让两者都能够各自变化。 举例来说吧,画图,我可以画矩形,圆,三角形等等,在哪里画呢?我可以在pdf上画,也可以在doc上面画。画什么图和在哪里画都是可以独立变化的,此种情况就比较适合用桥模式。就是说设计中有超过一维的变化我们就可以用桥模式。如果只有一维在变化,那么我们用继承就可以圆满的解决问题。 我的图形定义: #pragma once  #include<vector>  #in...
阅读全文
单例模式,顾名思义,就是只能由一个实例,那么我们就必须保证: 该类不能被复制。 该类不能被公开的创造。 那么对于C++来说,它的构造函数,拷贝构造函数和他的赋值函数都不能被公开调用。 但对于该私有的构造函数的构造时机上来说也可以分两种情况来构造: 只有当需要改类的时候去构造(即为懒汉模式) 在程序开始之前我就先构造好,你到时候直接用就可(即为饿汉模式) 那么我分别来说说这两种模式: 懒汉模式,静态局...
阅读全文
2015-08-20 21:34 工业·编程 ⁄ 共 716字 暂无评论
正常的map默认按照key值排序,而map又没有像vector一样的sort()函数,那么如果将map按照value值排序呢?有两种方法: 方法1 将map中的key和value分别存放在一个pair类型的vector中,然后利用vector的sort函数排序,其中map_verb存放我的map值: 存放我的map值: #include<algorithm> typedef pair<string, int> PAIR; int cmp(const PAIR &x, const PAIR &y) { return x.second > y...
阅读全文
2015-08-19 08:51 工业·编程 ⁄ 共 519字 暂无评论
首先在工程文件中加 QT  += script 然后头文件加 #include <QtScript> 然后解析 QString str = "{\"name\":\"xiaotang\", \"age\":\"23\", \"chi\":[{\"a\":\"aa\", \"b\":\"bb\"}, {\"a\":\"aaa\", \"b\":\"bbb\"}]}"; QScriptEngine engine; QScriptValue sc = en...
阅读全文