- 博客(72)
- 资源 (7)
- 收藏
- 关注
原创 Strategy模式
Strategy模式 Strategy模式和Template模式要解决的问题是相同的,都是为了实现业务逻辑具体实现和抽象接口之间的解耦。Strategy模式将逻辑算法封装到一个类中,通过组合的方式将具体算法的实现放在组合对象中实现,再通过委托的方式将抽象接口的实现委托给组合对象实现。Strategy模式和Template模式实际上是实现
2014-11-30 23:37:54 655
原创 Template Method模式
Template Method模式Intention: 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。TemplateMethod使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤。When: 对于一个业务逻辑(算法实现)在不同的对象中有不同的细节实现,但是逻辑(算法)的框架是相同的,TemplateMe
2014-11-30 21:20:21 717
原创 Proxy模式
Proxy模式Intention: 为其他对象提供一种代理以控制对这个对象的访问。When: 1、创建开销大的对象时,比如显示一幅大的图片,我们将这个创建过程交给Proxy去完成(Virtual Proxy)。 2、为网络上的对象创建一个局部的本地代理,比如要操作一个网络上的一个对象(特别是网络性能不好时),可将这个操纵
2014-11-30 18:32:00 700
原创 Facade模式
Facade模式Intention: 为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。When: 将一个系统划分为若干个子系统有利于降低系统的复杂性。一个常见的设计目标是是子系统之间的通信和相互依赖关系达到最小。达到该目标的途径之一就是引入一个外观对象,它为子系统
2014-11-30 18:05:25 678
原创 Flyweight模式
Flyweight模式一、意图: 运用共享技术有效地支持大量细粒度的对象。二、说明: Flyweight模式对那些通常因为数量太大而难以用对象来表示的概念或实体进行建模。三、举例: 文档编辑器,可以为每个字母创建一个Flyweight。每个享元存储一个字符代码,但它在文档中的位置和排版风格可以在字符出现时
2014-11-30 14:44:31 632
原创 Composite模式
Composite模式一、遇到的问题: 开发中,经常可能要递归构建树状的组合结构,Composite模式可助你。二、意图: 将对象组合成树形结构以表示"部分-整体"的层次结构,Composite使得用户对单个对象和组合对象的使用具有一致性。三、C++代码示例://component.h#ifndef COM
2014-11-30 12:57:18 749
原创 Decorator模式
Decorator模式 在OO设计和开发过程中,若我们需要为一个已经定义好的类添加新的操作,通常会定义一个新类来继承以定义好的类,这样会带来一个问题(见),通过继承还带来了系统的复杂性。 Decorator模式提供了一种给类添加操作的方法,不是通过继承实现,而是通过组合,使组件对客户透明。一、意图: 动态地给一个对象
2014-11-30 11:34:14 682
原创 Adapter模式
Adapter模式一、意图: 将一个类的接口转换成客户希望的另一个接口,Adapter模式使得原本由于接口不兼容而不能一起工作的类可以一起工作。二、举例: 在应用程序中已然设计好了接口,此时使用了第三方库来加快开发,但是我们设计的接口与三方库提供的接口不一致。为了使接口不兼容的类可以在一起工作,Adapter模式将一个
2014-11-30 08:57:52 708
原创 Bridge模式
Bridge模式 总结面向对象实际上就六个字:高聚合,松耦合。666。一、意图: 将抽象部分与它的实现部分分离,使它们都可以独立地变化。 note: 这里的"实现"不是指的继承基类实现基类接口,而是通过对象组合实现用户的需求。 二、动机: 考虑在一个用户界面工具箱中,一个可移植的Window抽象部分的实
2014-11-30 00:19:07 853
原创 Prototype模式
Prototype模式一、意图: 用原型实例指定创建对象的种类,并且通过拷贝这些原则创建新的对象。(复制构造函数)二、C++示例:#include using namespace std;class Prototype{public: virtual ~Prototype(); virtual Proto
2014-11-29 22:43:09 789
原创 Builder模式
Builder模式一、意图: 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。二、通俗解释: 大学教育有四个学年,每个学年可作为教育的一个构建过程,每个人经过四年得到的结果不一样,因为在这四个阶段的构建中引入了不同的参数(如个人的奋斗和机遇等)。三、解决的问题: 当我们要创建的对象很
2014-11-29 21:47:59 853
原创 Singleton模式
Singleton模式一、要解决的问题: 怎样创建一个唯一的变量(对象)?二、解决: 通过维护一个static的成员变量来记录这个唯一的对象实例,通过提供一个static的接口来获得这个唯一的实例。三、C++实例://singleton.h#ifndef SINGLETON_H#define SING
2014-11-29 19:47:23 604
原创 AbstractFactory模式讲解
AbstractFactory模式零、意图: 提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类。一、解决的问题: 在一款游戏中,怪物都是分等级的,要创建千万个怪物实例,但是要保证初级的怪物类不能创建高级的。 支持多种视感标准的用户界面工具包。二、动机: 以工具包为例:为解决需求可以定义一个
2014-11-29 18:57:06 719
原创 Factory Method模式讲解
Factory Method模式讲解零:FactoryMethod模式两个最重要的功能: 1)定义创建对象的接口,封装了对象的创建。 2)使得具体化类的工作延迟到了子类中。//抽象基类只是提供了对象创建的接口,其实现放在抽象基类的派生类中。一、解决的问题: 1、为提高内聚和松耦合,抽象出一些类的公共接口形
2014-11-29 17:00:15 793
原创 设计模式总览
设计模式总览 设计模式一般来说有23中,可分为3类:创建性模式、结构性模式、行为模式。★创建型模式包括:FactoryMethod模式、AbstractFactory模式、Singleton模式、Builder模式、Prototype模式.★结构型模式包括:Bridge模式、Adapter模式、Decorator模式、Composite模式
2014-11-29 14:23:05 764
转载 链接:掌握android所有控件、ProgressBar 、Android 动画效果、SQLite、四大组件、Android多媒体
git checkoutHEAD的重置即检出:git reset 使HEAD的内容不能改变而一直指向master分支。而git checkout的实质是修改HEAD本身的指向,该指针不会影响分支"游标"(如master)查看当前HEAD的指向: cat .git/HEAD #输出ref: refs/heads/master执行git branch -v会看到当前处于mast
2014-11-28 23:52:23 511
原创 QtScript小测
QtScript小测//.proQT += core guiQT += scriptCONFIG += uitoolsgreaterThan(QT_MAJOR_VERSION, 4): QT += widgetsTARGET = TableTEMPLATE = appSOURCES += main.cppHE
2014-11-28 23:41:54 913
原创 Git:分支&&HEAD的重置
分支的重置question:有新提交时,master分支对应的引用文件的内容是否改变?master分支对应的引用文件中的内容可否人为改变?touch new-commit.txtgit add new-commit.txtgit commit -m "judge"cat .git/refs/heads/master #发
2014-11-28 17:37:47 12982
原创 Git库对象
Git库对象先查看日志的详尽输出,发现有三个SHA1哈希值: $ git log -l --pretty=raw使用git cat-file -t id 查看对象ID类型(commit/tree)使用git cat-file -p id 查看对象的内容,输出的blob对象保存着welcome.txt的内容,-t查看id类型输出为
2014-11-28 15:31:44 806
原创 git diff&&git stash
git diff查看HEAD(版本库中当前提交)指向的目录树: $ git ls-tree -l HEAD显示暂存区的目录树: $ git ls-files -s若想针对暂存区的目录树使用git ls-tree,需先将暂存区的目录树写入Git对象书,然后针对该目录树执行命令git ls-tree: $
2014-11-28 08:20:11 1567
原创 Git暂存区
Git暂存区git log查看提交日志,--stat参数可以看到每次提交的文件变更统计: $ cd /d/GitRoot/workspace/demo $ git log --stat查看修改后的文件与版本库中的文件(实际比较的是一个中间状态的文件)的差异: $ git diff显示精简格式的状态输出
2014-11-28 00:52:35 772
原创 Git第一篇
查看Git版本:$ git --version//工作备份:本地提交: $ git add -u #如果创建了新文件,可执行git add -i 命令 $ git commit推送操作:将本地版本库中的提交同步到公司的Git服务器上: $ git push//两地协同工作:将mirror
2014-11-27 22:24:19 667
转载 为什么 Git 比 SVN 好
为什么 Git 比 SVN 好在版本控制系统的选型上,是选择Git还是SVN?对于开源项目来说这不算问题。使用Git极大地提高了开发效率、扩大了开源项目的参与度、 增强了版本控制系统的安全性,选择Git早已是大势所趋。但对于企业用户来说这个决心不太好下。部分原因是出于对Git的误解,部分原因是尚不了解 Git到底能给项目管理带来什么好处。希望
2014-11-27 15:44:43 715
转载 QML侧边伸缩导航栏
import QtQuick 2.0Rectangle { id: root width: 100; height: 400; color: "white" Rectangle { id: hideButton anchors { top: parent.top; bottom:parent.bott
2014-11-26 19:33:44 5166 2
转载 Q_INVOKABLE与invokeMethod用法详解
Q_INVOKABLE与invokeMethod用法全解请尊重原创作品和译文。转载请保持文章完整性,并以超链接形式注明原始作者地址http://blog.csdn.net/changsheng230,方便其他朋友提问和指正。 在Qt/Qt Quick宏浅议一文中,我们将介绍Qt中经常使用的几个宏: Q_OBJECT, SIGNAL与SLOT, Q_SIGNALS 与 Q_SLOTS
2014-11-26 14:41:16 5495
转载 Qt Quick实现的涂鸦程序
之前一直以为 Qt Quick 里 Canvas 才可以自绘,后来发觉不是,原来还有好几种方式都可以绘图!可以使用原始的 OpenGL(Qt Quick 使用 OpenGL 渲染),可以构造QSGNode 来绘图,还可以使用 QPainter !哇, QPainter 我很熟悉啊。于是,我用 QPainter 结合 QML 实现了一个简单的涂鸦程序: PaintedItem 。它有下列功能:
2014-11-26 13:03:02 4748 3
原创 Qt网络开发之QNetworkAccessManager使用要点
要点一:对于一个应用程序,一个QNetworkAccessManager就足够了,当然使用多个QNetworkAccessManager也是没有问题的,Webkit中一个QWebpage只会使用一个QNetworkAccessManager。 要点二:每一个回复QNetworkReply都需要删除,否则会出现内存泄露,根据Qt的帮助文档,在接收完数据的槽中使用deleteLater(
2014-11-21 18:55:06 15697
转载 Qt网络编程之QNetworkAccessManager
注意:这个类的所有函数都是可重入的。 这个类是从Qt4.4引入的。详细描述 QNetworkAccessManager类允许应用程序发送网络请求和接收网络应答。 Network Access API都是围绕着一个QNetworkAccessManager对象构造的,这个对象包含着发送请求的一些通用配置和设置。它包含着代理和缓存的配置,以及和这些事
2014-11-21 18:36:37 1717 1
原创 QwtArrowButton,QwtSystemClock,QwtPlotPanner类参考---from Qwt-6.1.1
QwtArrowButton类参考: QwtArrowButton是箭头按钮,继承自QPushButton.公有成员函数:• QwtArrowButton (int num, Qt::ArrowType, QWidget ∗parent=NULL)• virtual ∼QwtArrowButton ()• Qt::ArrowType arr
2014-11-21 11:36:22 1492
原创 Qwt(ColorMap,Clipper,Compass,DialNeedle)参考---from Qwt6.1.1
QwtColorMap解读---from Qwt-6.1.1 QwtColorMap用来将值映射为颜色。QwtColorMap是顶层基类,派生出QwtAlphaColorMap和QwtLinearColorMap.公有类型:• enum Format { RGB, Indexed }公有成员函数:• QwtColorMap (Format=QwtColorMa
2014-11-21 10:48:16 3062
原创 QwtPainter解读---from Qwt6.1.1
QwtPainter解读---from Qwt6.1.1全部是静态的公有成员函数:• static void setPolylineSplitting (bool); //为了光栅绘图引擎设置线条是否可分裂• static bool polylineSplitting (); //当为了光栅绘图引擎,线条分裂可以使用,返回真• static void
2014-11-21 02:59:48 1480
原创 QwtLegend解读---from Qwt-6.1.1
QwtLegend解读---from Qwt-6.1.1 QwtLegend是一个图例控件,派生关系为QFrame->QwtAbstractLengend->QwtLegend.公有槽:• virtual void updateLegend (const QVariant &, const QList QwtLegendData > &);信号:• void
2014-11-21 01:48:55 3088
原创 QwtMagnifier解读---from Qwt-6.1.1
QwtMagnifier解读---from Qwt-6.1.1 QwtMagnifier继承于QObject,被QwtPlotMagnifier继承,提供逐步缩放功能。使用QwtMagnifier,一个plot可以用键、鼠标滚轮或移动一个鼠标按钮(在垂直方向上)被逐步缩放。公有成员函数:• QwtMagnifier (QWi
2014-11-19 23:01:52 1952
原创 QwtPlotLayout解读---from Qwt-6.1.1
QwtPlotLayout解读---from Qwt6.1.1 QwtPlotLayout是QwtPlot的布局引擎公有类型:• enum Option { AlignScales = 0x01, IgnoreScrollbars = 0x02, IgnoreFrames = 0x04, IgnoreLegend = 0x08
2014-11-19 21:06:13 2415
原创 QwtPlotItem解读---from Qwt-6.1.1
QwtPlotItem解读———from Qwt6.1.1 QwtPlotItem是画布上所有图元的基类,因为QwtPlotItem是一个抽象基类,所以所有的图元实例化时都必须实现draw()方法。公有类型:• enum RttiValues {Rtti_PlotItem = 0, Rtti_PlotGrid, Rt
2014-11-19 20:03:01 2673
原创 QwtPlot解读---from Qwt-6.6.1
QwtPlot--from Qwt-6.6.1 QwtPlot继承自QFrame和QwtPlotDict.QwtPlot是一个二维绘图部件,它只是一个视图窗口,真正的绘图设备是它的中心部件QwtPlotCanvas.在QwtPlot的画布上可以显示不限数量的基地图元项,图元项可以是QwtPlotCurve,QwtPlotMarker,QwtPlotGrid或任意从QwtPlo
2014-11-19 18:36:07 2859 1
原创 QSortFilterProxyModel简介及小例
直接派生QAbstractProxyModel的子类方法足够灵活,但是需要实现两个数据集索引的映射,并需要重载多个接口函数。如果这种映射只是对源模型中的数据项进行过滤或排序,可以使用Qt提供的QSortFilterProxyModel. 在实现索引之间的映射时,该类考虑了过滤排序两种操作。关于过滤操作:成员函数setFilterKeyColumn(),setFilterReg
2014-11-18 14:52:19 4587
原创 派生QAbstractProxyModel小例
対源模型的代理本质上就是建立代理模型的索引与源模型的索引之间的映射关系。定义QAbstractProxyModel的派生类时,需要完成两项任务:1)、重载纯虚函数 mapToSource()和 mapFromSource(),定义代理模型索引与源模型索引之间的映射关系。2)、实现QAbstractItemModel的最小接口。因为QAbstractProxyModel是QAbstrac
2014-11-18 09:52:50 4062
ACM-ICPC算法训练教程-余立功-清华大学出版社5
2014-04-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人