设计
爱很遥远
事有其道
展开
-
UML统一建模语言
UML是一种创建程序模型的可视化语言,图形化的表现形式可以看出代码中对象的关系,用它可以进行清晰的交流,精确的设计,这比只在想象中或者文字中或者代码中思考要强很多。UML中有很多种不同的图,但面向对象设计并不需要把UML全面掌握,我们一般使用的是类图和顺序图。 1、类图 描述类、表现类之间的关系,是最基本的建模图。类之间的关系包括:一个类是一种另一个类(is-a)、一个类包含另一个类(原创 2015-02-12 20:35:46 · 332 阅读 · 0 评论 -
软件生涯中第一个设计
今天做了软件开发以来的第一个设计,虽然很小,但是在这个过程中思考了很多东西,设计的时候基本上代码怎么安排怎么写都了然于胸,跟以前想到哪儿写到哪儿完全不是一个感觉。而且,通过看类图和序列图能够很清晰的跟别人讲解自己的设计意图,感觉很不错。设计中也没用到什么模式,最多说用了一下策略模式。现在把基本架构画一下。 类图如下: 序列图大概是: 接下来看看编码原创 2015-03-04 22:19:31 · 228 阅读 · 0 评论 -
设计中遇到的问题和经验
设计本身就是一个经验累积的过程。设计中遇到的问题都可以总结出一些共性的原则。说说我的体会: 1、类成员由类级别管理。函数级管理的变量或对象用局部变量即可,不应作为类的成员; 2、设计要从上到下,只聚焦当前模块功能,不要过早陷入业务细节; 3、服务器程序一般都牺牲内存换取性能。大多数资源在启动时创建,不要在业务运行中频繁创建释放; 4、创建者持有对象,创建者被释放时先释放其持有的资源; 5原创 2015-03-06 19:25:35 · 879 阅读 · 0 评论 -
设计模式之工厂模式
工厂模式的目的就是讲产品生产和使用解耦。包括简单工厂、工厂方法、抽象工厂三种。 简单工厂,就是简单的把生成产品封装在一个集中的地方,对外提供获取产品的接口。 // 产品接口 class IProduct { }; // 产品A class ProductA : public IProduct { }; // 产品B class ProductB : public IProduct { };原创 2017-01-16 22:14:27 · 206 阅读 · 0 评论 -
设计模式之观察者模式
观察者模式定义了一对多的依赖关系,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新,松耦合。本质上是一种发布订阅的模型。 代码如下 #include #include using namespace std; class IObserver { public: virtual void update(string) = 0; }; class ISubject原创 2017-01-17 18:03:22 · 165 阅读 · 0 评论 -
单例模式
单例模式,即保证程序中一个类只有一个实例,并提供一个全局访问点。 class CSingleton { private: CSingleton() {} // 私有构造函数 static CSingleton *m_pInstance; // 唯一实例 public: static CSingleton *GetInstance()原创 2017-01-25 11:13:16 · 143 阅读 · 0 评论 -
线程池,这一篇或许就够了
原文 https://segmentfault.com/a/1190000009098623 为什么用线程池 创建/销毁线程伴随着系统开销,过于频繁的创建/销毁线程,会很大程度上影响处理效率 >例如: > >记创建线程消耗时间T1,执行任务消耗时间T2,销毁线程消耗时间T3 > >如果T1+T3>T2,那么是不是说开启一个线程来执行这个任务太不划算了! > >正好,线程池缓转载 2017-04-19 22:26:31 · 305 阅读 · 0 评论 -
自己编写的简单的线程池
利用C++11的std::thread,实现生产消费模型。 /*任务接口*/ #ifndef _ITASK_HEAD_ #define _ITASK_HEAD_ class ITask { public: ITask(void *arg = nullptr) :m_arg(arg) { } virtual ~ITask() { } void原创 2017-04-23 19:58:25 · 340 阅读 · 0 评论