设计模式
kmcfly
故不积蹞步,无以至千里;不积小流,无以成江海。
展开
-
C++设计模式——单例模式
问题描述 现在,不管开发一个多大的系统(至少我现在的部门是这样的),都会带一个日志功能;在实际开发过程中,会专门有一个日志模块,负责写日志,由于在系统的任何地方,我们都有可能要调用日志模块中的函数,进行写日志。那么,如何构造一个日志模块的实例呢?难道,每次new一个日志模块实例,写完日志,再delete,不要告诉我你是这么干的。在C++中,可以构造一个日志模块的全局变量,那么在任何地方就都可转载 2015-09-22 15:28:05 · 350 阅读 · 0 评论 -
C++设计模式——观察者模式
前言 之前做了一个性能测试的项目,就是需要对现在的产品进行性能测试,获得测试数据,然后书写测试报告,并提出合理化的改善意见。项目很简单,我们获得了一系列性能测试数据,对于数据,我们需要在Excel中制作测试数据的折线图、饼状图和柱状图,以直观的表现出性能的变化。在实际操作时,我发现,如果我修改了一个数据,折线图、饼状图和柱状图就都发生了变换。这个是如何做到的?这就要说到今天总结的观察者模式了转载 2015-09-22 15:30:52 · 346 阅读 · 0 评论 -
C++设计模式——抽象工厂模式
问题描述 之前讲到了C++设计模式——工厂方法模式,我们可能会想到,后期产品会越来越多了,建立的工厂也会越来越多,工厂进行了增长,工厂变的凌乱而难于管理;由于工厂方法模式创建的对象都是继承于Product的,所以工厂方法模式中,每个工厂只能创建单一种类的产品,当需要生产一种全新的产品(不继承自Product)时,发现工厂方法是心有余而力不足。 举个例子来说:一个显示器电路板厂商,旗下的转载 2015-09-22 16:21:07 · 362 阅读 · 0 评论 -
C++设计模式——适配器模式
生活中的适配器 买笔记本电脑,买手机时,都有一个电源适配器,电源适配器又叫外置电源,是小型便携式电子设备及电子电器的供电电压变换设备,常见于手机,笔记本电脑上。它的作用是将家里的220V高电压转换成这些电子产品能工作的5V~20V左右稳定的低电压,使它们能正常工作。就是说,如果没有这个电源适配器,我们的手机和电脑就不能进行充电了。 之前同事去日本出差,由于工作需要,就将自己的笔记本带过转载 2015-09-22 16:47:52 · 318 阅读 · 0 评论 -
C++设计模式——组合模式
问题描述 上图,是一个公司的组织结构图,总部下面有多个子公司,同时总部也有各个部门,子公司下面有多个部门。如果对这样的公司开发一个OA系统,作为程序员的你,如何设计这个OA系统呢?先不说如何设计实现,接着往下看,看完了下面的内容,再回过头来想怎么设计这样的OA系统。 什么是组合模式? 在GOF的《设计模式:可复用面向对象软件的基础》一书中对组合模式是这样说的:将对象组合成转载 2015-09-23 11:00:25 · 326 阅读 · 0 评论 -
C++设计模式——桥接模式
问题描述 现在要去画一个图形,图形有长方形、圆形和扇形等等;而图形又可以加上不同的颜色,然后,我们就可以画出红色的长方形,绿色的长方形;红色的圆形,绿色的圆形等等。而这种图形的形状在变化,图形的颜色也在变化,当使用代码去实现时,如何面对这种多方面的变化呢?这就要说到今天的桥接模式了。 什么是桥接模式? 对于上述的图形与颜色的问题时,很多时候,我们让各个图形类继承颜色类,比如:转载 2015-09-23 14:47:29 · 350 阅读 · 0 评论 -
秒杀多线程第十篇 生产者消费者问题
继经典线程同步问题之后,我们来看看生产者消费者问题及读者写者问题。生产者消费者问题是一个著名的线程同步问题,该问题描述如下:有一个生产者在生产产品,这些产品将提供给若干个消费者去消费,为了使生产者和消费者能并发执行,在两者之间设置一个具有多个缓冲区的缓冲池,生产者将它生产的产品放入一个缓冲区中,消费者可以从缓冲区中取走产品进行消费,显然生产者和消费者之间必须保持同步,即不允许消费者到一个空的缓冲区转载 2016-07-14 16:42:17 · 389 阅读 · 0 评论