设计模式与软件构架、编程规范
xiaoding133
My name is Ma dingding. I’m a student, and software cultivator living in NanJing. This is my software development blog. I also study the aspect of speech recognition.If you are on Weibo,you can follow me at @xiaoding133.
展开
-
结构型模式之代理模式(Proxy Pattern)C++实现
定义:为另一个对象提供一个替身或占位符以控制对这个对象的访问。代理模式类图:使用代码模式的情况:1)创建开销大的对象时候,比如显示一幅大的图片,我们将这个创建的过程交给代理去完成,称之为虚代理(Virtual Proxy);2)为网络上的对象创建一个局部的本地代理,比如要操作一个网络上的一个对象(网络性能不好的时候,问题尤其突出),我们将这个操纵的过程交给一个代原创 2012-07-03 14:10:14 · 994 阅读 · 0 评论 -
创建型模式之单件模式(Singleton Pattern )C++实现
单件模式(Singleton Pattern)创建型模式定义:确保一个类只有一个实例,并提供全局访问点。用来创建独一无二,只能有一个实例的对象的入场券。它是所有设计模式类图中最简单的。该模式在开发中非常有用。实现单件模式需要私有的构造器、一个静态的方法和一个静态的变量。该模式通常与抽象工厂模式或工厂模式配合使用,因为我们只需要一个工厂来创建对象。该模式最简单,C++的实原创 2012-06-30 18:08:34 · 1125 阅读 · 0 评论 -
C++编程规范学习总结
一、头文件 所有头文件都应该使用#define 防止头文件被多重包含(multiple inclusion),命名格式当是:___H_为保证唯一性,头文件的命名应基于其所在项目源代码树的全路径。例如,项目foo 中的头文件foo/src/bar/baz.h 按如下方式保护:#ifndef FOO_BAR_BAZ_H_#define FOO_BAR_BAZ_H_...#e原创 2011-09-29 20:13:47 · 775 阅读 · 0 评论 -
UML类图几种关系的总结
在UML类图中,常见的有以下几种关系:泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency) 1.泛化(Generalization)【泛化关系】:是一种继承关系,它指定了子类如何特化父类的所有特征和行为例如:老虎是动物的一种.【箭头指向】转载 2012-08-27 10:06:40 · 770 阅读 · 0 评论 -
UML用例图总结
转载请注明出处:http://blog.csdn.net/tianhai110 用例图主要用来描述用户、需求、系统功能单元之间的关系。它展示了一个外部用户能够观察到的系统功能模型图。【用途】:帮助开发团队以一种可视化的方式理解系统的功能需求。 用例图所包含的元素如下:1. 参与者(Actor)表示与您的应用程序或系统进行交互的用户、组织或外部系统。用一个转载 2012-08-27 10:12:47 · 714 阅读 · 0 评论 -
10 Tips to improve your Software Architecture Design
You can improve the quality of your Software Architecture Design by using the following 10 tips. I use these 10 tips or guidelines daily and they have helped me creating high quality Software Arch转载 2013-03-24 14:12:34 · 2749 阅读 · 0 评论 -
C++编程规范和标准总结
文件名:每个源代码文件应该有一个包含文件。每个包含文件描述了单个类或者多个类相结合的集合。一般头文件(.h,或.hpp)包含类的定义而不是实例。因此包含文件可以用在多个文件当中,源文件(.c,.或cpp)定义了编译时加载进内存的代码,它的实例化定义包含在头文件中,例如,一个类的定义应该包含在.hpp的包含文件中,一个全局变量应该在.cpp文件中实例化而不是.hpp文件中。用exte原创 2013-09-19 21:31:06 · 4909 阅读 · 0 评论 -
[设计模式]两种方法实现简单工厂模式
1.描述在项目开发中经常会遇到根据不同的条件创建不同的对象,然后对该对象进行操作,一般都包括许多的switch -case分支如下:CBase* pBase(NULL);switch (type_variable){ case obj1: pBase = new CBaseDerivate1();break; case obj2: pBase = new CBaseDe原创 2015-04-11 14:54:20 · 4221 阅读 · 2 评论 -
创建型模式之工厂模式(Factory Pattern)C++实现******
工厂模式(Factory Pattern)创建型模式.解决:如何将实例化具体类的代码从应用中抽离,或封装起来,使它们不会干扰应用的其他部分.专门负责创建各类对象的新对象叫做”工厂”.工厂处理创建对象的细节.简单工厂模式不是一种模式,只是一种编程习惯.有的人直接把它当作”工厂模式”.我们需要提供一个对象创建对象的接口,并在子类中提供其具体实现(因为只有在子类中可以决定到底实例化哪一个原创 2012-06-29 21:18:40 · 1518 阅读 · 0 评论 -
Understanding and Implementing Observer Pattern in C++
IntroductionThis article presents the basics of Observer Pattern, when to use it and how to implement it in C++. I have posted a similar article that talks about the Observer pattern in C#. The main转载 2012-02-29 13:17:37 · 630 阅读 · 0 评论 -
Understanding and Implementing Factory Pattern in C++
IntroductionThis article aims at understanding the Factory Pattern and a basic implementation of Factory pattern in C++.BackgroundThere are many scenarios when a class needs to create several ob转载 2012-02-21 13:14:33 · 695 阅读 · 0 评论 -
行为模式之状态模式(State Pattern)C++实现
定义:允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类。将状态封装成为独立的类,并将动作委托到代表当前状态的对象。将状态逻辑和动作实现进行分离。状态模式类图:它与策略模式的类图一模一样,但是它们的差别在于“意图”。它和程序状态机(PSM)不同,状态模式用类代表状态。Context会将行为委托给当前状态对象。状态模式允许Context随着状态的改变而改变行为。原创 2012-07-03 12:44:27 · 1276 阅读 · 1 评论 -
结构型模式之装饰模式(Decorator Pattern)C++实现
装饰模式(Decorator Pattern)结构型模式.设计原则:类应该对扩展开放,对修改关闭.例子:用调料来装饰饮料。比如说顾客想要摩卡和奶泡深焙咖啡,那么要做的是:1.拿一个深焙咖啡(DarkRoast)对象2.以摩卡(Mocha)对象去装饰它3.以奶泡(Whip)对象去装饰它4.调用cost()方法,并依赖委托(delegate)将调料的原创 2012-06-29 15:21:36 · 944 阅读 · 0 评论 -
行为模式之策略模式(Strategy Pattern)(C++实现)
策略模式(Strategy Pattern).定义了算法族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。Strategy模式将逻辑(算法)封装到一个类里面,通过组合的方式将具体算法的实现在组合对象中实现,通过委托的方式将抽象接口的实现委托给组合对象实现。1.设计原则:a.找出应用中的可能变化之处,把它们独立出来,不要和那些不需要变化的代码混起来。(原创 2012-06-28 13:47:48 · 1142 阅读 · 0 评论 -
创建型模式之抽象工厂模式(AbstractFactory Pattern)C++实现******
抽象工厂模式(AbstractFactory Pattern)创建型模式.定义:提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。工厂方法潜伏在抽象工厂里面,抽象工厂的方法经常以工厂方法的方式实现。抽象工厂的任务就是定义一个负责创建一组产品的接口。这个接口内的每一个方法都负责创建一个具体的产品,同时我们利用实现抽象工厂的子类来提供这些具体的做法。 Factory模式原创 2012-06-30 15:03:43 · 1161 阅读 · 0 评论 -
行为模式之命令模式(Command Pattern)C++实现
命令模式(Command Pattern)行为模式. 命令模式将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式也支持可撤销的操作。命令模式可以用在队列请求和日志请求。 餐厅对象对应到命令模式包括:command(订单),execute()(orderUP()),Client(顾客),Invoker(女招待),Receive原创 2012-07-01 15:11:29 · 1384 阅读 · 0 评论 -
结构型模式之适配器模式(Adapter Pattern)与外观模式(Facade Pattern)
适配器模式定义:将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。 适配器模式的工作是将一个接口转换成另一个。如果让一个适配器包装多个被适配者就是Façade 模式。对象适配器类图: 类适配器:对象适配器利用组合的方式将请求传送给被适配者。类适配器采用多重继承来实现。Adapter继承了Target和Adaptee原创 2012-07-02 11:39:09 · 797 阅读 · 0 评论 -
结构型模式之迭代器(Iterator)与组合模式(Composite Pattern)C++实现******
目标:让用户遍历你的对象而无法窥视你存储对象的方式。如何创建对象的超集合。迭代器模式:提供一种方法顺序访问一个聚合对象中的各个元素,而不暴露其内部的表示。迭代器模式把在元素之间游走的责任交给迭代器,而不是聚合对象。迭代器类图:组合模式:允许你将对象组合成树形结构来表现“整体/部分”层次结构。组合能让客户以一致的方式处理个别对象以及对象组合。组合模式类图:原创 2012-07-02 18:45:56 · 1664 阅读 · 2 评论 -
行为模式之模板方法模式(Template Pattern)C++实现
定义:在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。模板方法模式的类图:钩子:是一种被声明在抽象类中的方法,但只有空的或者默认的实现。钩子的存在可以让子类有能力对算法的不同点进行挂钩。要不要挂钩,由子类自行决定。 模板方法定义了一个算法的步骤,并允许子类为一个或多个步骤提供实现。 模板原创 2012-07-02 13:41:56 · 904 阅读 · 0 评论 -
行为模式之观察者模式(Observer Pattern)(C++实现)******
观察者模式(Observer Pattern)行为模式.它是应用最多,影响最广的模式之一,因为Observer的一个实例Model/View/Control(MVC)结构在系统开发构架中有着很重要的地位和意义,MVC实现了业务逻辑和表示层的解耦。Observer模式是软件开发过程中必须要掌握的和使用的模式之一。Observer模式要解决的问题为:建立一个一(Subject)对多(Observe原创 2012-06-28 20:53:57 · 1376 阅读 · 0 评论 -
基于Table方法降低代码圈复杂度
描述: 在项目开发过程中,经常要求圈复杂度不能超过10,有时候写着写着圈复杂度就很大,我在项目代码中见过函数圈复杂度大于100的函数,由于历史的原因,代码越积越多,没人出去重构,导致后面很难懂和维护,所以在编码初期就应该在心中有个要求,就是圈复杂度不能超过10,如果超过10,肯定是代码逻辑写的过于复杂,要回过头来想想怎么去分解功能,让流程简单易懂。原创 2015-04-25 22:01:30 · 6664 阅读 · 0 评论