![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
QQ276592716
这个作者很懒,什么都没留下…
展开
-
单例模式2(C++)
除了用静态成员的方法保证单例,也可以用一个类变量记录实例对象指针来保存生成的实例。 #ifndef _BATS_SINGLETON_HH_#define _BATS_SINGLETON_HH_#include namespace jmu3d{ /** * A templat原创 2011-07-12 00:26:53 · 735 阅读 · 0 评论 -
Behavioral - Observer模式
也称为Dependents或Publish-Subscribe模式。 定义对象间的一种一对多的依赖关系,以便当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新。“Define a one-to-many dependency between objec转载 2011-08-18 14:15:10 · 652 阅读 · 0 评论 -
保存个单例类~
#pragma once#define DECLARE_SINGLETON(className) \ private: \ className(){ Init();} \ friend Singleton; template class Singleton { public: Singleton(void){原创 2012-08-28 10:47:54 · 609 阅读 · 0 评论 -
java double check lock
对于多线程编程来说,同步问题是我们需要考虑的最多的问题,同步的锁什么时候加,加在哪里都需要考虑,当然在不影响功能的情况下,同步越少越好,锁加的越迟越优是我们都必须认同的。DCL(Double Check Lock)就是为了达到这个目的。 DCL简单来说就是check-lock-check-act,先检查再锁,锁之后再检查一次,最后才执行操作。这样做的目的是尽可能的推迟锁的时间。网上普遍举的转载 2012-12-08 22:51:08 · 6429 阅读 · 0 评论 -
volatile语义及线程安全singleton模式探讨
作者:Scott Meyers and Andrei Alexandrescu 译者: ChengHuige at gmail.com1.引言 详尽的讨论了volatile语义以及如何用C++实现线程安全的Singleton模式。 主要参考Scott Meyers and Andrei Alexandrescu写的“C++ and the Perils of Doubl转载 2013-10-13 15:59:41 · 1076 阅读 · 0 评论 -
Read-copy-update
From Wikipedia, the free encyclopediaIn computer operating systems, read-copy-update (RCU) is a synchronization mechanism implementing a kind of mutual exclusion[note 1] which can转载 2013-10-14 00:05:57 · 2804 阅读 · 0 评论 -
外观模式
动机(Motivate): 在软件开发系统中,客户程序经常会与复杂系统的内部子系统之间产生耦合,而导致客户程序随着子系统的变化而变化。那么如何简化客户程序与子系统之间的交互接口?如何将复杂系统的内部子系统与客户程序之间的依赖解耦?意图(Intent): 为子系统中的一组接口提供一个一致的界面, Facade 模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。转载 2014-01-24 14:04:48 · 800 阅读 · 0 评论 -
黑板模式
黑板架构模式简介编辑黑板模式是一种常用的架构模式,应用中的多种不同数据处理逻辑相互影响和协同来完成数据分析处理。就好像多位不同的专家在同一黑板上交流思想,每个专家都可以获得别的专家写在黑板上的信息,同时也可以用自己的分析去更新黑板上的信息,从而影响其它专家。2黑板模式的应用场景编辑黑板模式的应用场景是要解决的任务可以分为多个子任务。解决方案如下图所示:3黑板模式的优转载 2014-01-17 10:25:32 · 1605 阅读 · 0 评论 -
网络编程中的reactor与proactor
首先,他们都解决了等待多个事件发生的问题,对多个事件源进行了多路分解。效率上面:reactor在缓冲区与内核的拷贝上面比proactor多了好几次,reactor在事件发生的时候是串行执行的,而proactor支持异步操作。引用别人的一个说法:reactor完成的时候只是告诉你有可读或者可写等消息,proactor已经帮你读到你要的缓冲区里面了。reactor比原创 2014-02-13 20:12:00 · 1006 阅读 · 0 评论 -
设计模式- 主动对象(Active Object)
译者注:1. 对象分为主动对象和被动对象,主动对象内部包含一个线程,可以自动完成动作或改变状态,而一般的被动对象只能通过被其他对象调用才有所作为。在多线程程序中,经常把一个线程封装到主动对象里面。2. 在翻译过程中,发现的原文不妥处被更正。3. 原文中许多内容一再重复,颇有蛇足之感,取精用宏,删繁就简。4. 尝试更高程度的意译。关键词这个文章转载 2014-02-18 19:06:12 · 1477 阅读 · 1 评论 -
引用技术接口的几个问题?
有个网络通信类,主要执行是在另外一个线程。但是在线程执行的时候,对象很可能已经析构了。所以接口设计为class PostCallBack:public base::RefCountedThreadSafe{public:virtual void ProcessData(string data,string flag)=0;virtual BrowserThread::I原创 2014-03-25 09:39:02 · 756 阅读 · 0 评论 -
Decorator模式的一些理解~
原来转载的文章在这里http://blog.csdn.net/qq276592716/article/details/6679695里面说到:在结构图中,ConcreteComponent和Decorator需要有同样的接口,因此ConcreteComponent和D原创 2011-08-18 16:55:49 · 525 阅读 · 0 评论 -
C++实现Structural - Flyweight模式
面向对象很好地解决了系统抽象性的问题,同时在大多数情况下,也不会损及系统的性能。但是,在某些特殊的应用中,由于对象的数量太大,采用面向对象会给系统带来难以承受的内存开销。比如图形应用中的图元等对象、字处理应用中的字符对象等等。 采用纯粹对象方案的问题在于大量细粒度的对象会转载 2011-08-17 15:28:00 · 759 阅读 · 0 评论 -
抽象工厂(C++)
定义提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。 理解1. AbstractFactory是抽象工厂类,声明创建产品族的接口。具体工厂创建具体的产品族(Product Family),可以创建出分属于不同产品等级的一个产品族中的所有对象。Con转载 2011-07-28 15:23:40 · 973 阅读 · 0 评论 -
单例模式的设计(C++)
设计单例模板类template class Singleton {private: Singleton(); Singleton(const Singleton&); Singleton& operator= (const Singleton&); ~Singleton();pu原创 2011-07-12 00:07:51 · 678 阅读 · 0 评论 -
prototype模型的两个优点~
看了prototype模型,可能是悟性比较低,实在不觉得它有什么好优点。扣了扣可能下面两个算是其优点1.隐藏了程序的构造细节,使构造一个相同的类变的容易。2.可以被广泛应用在例如+-*/的连续运算的编程中,主要是再利用~原创 2011-08-01 16:19:16 · 804 阅读 · 0 评论 -
C++ Decorator模式
0 引言0.1 目的 本文档给出设计模式之——Decorator模式的简化诠释,并给出其C++实现。0.2 说明ProjectDesign Pattern Explanation(By K_Eckel)转载 2011-08-11 17:35:25 · 2492 阅读 · 0 评论 -
C++实现Structural - Composite模式
在面向对象的系统中,我们经常会遇到一类具有“容器”特征的对象,即它们在充当对象的同时,又是其他对象的容器。举例:在操作系统中,文件的概念很广泛,其中文件可以是普通文件,也可以是目录(在Unix中,设备也是文件),目录中可以存放文件。Composite设计模式就是将“客户代转载 2011-08-10 14:04:20 · 668 阅读 · 0 评论 -
bridge模式和builder模式
个人感觉bridge和builder模式差不多,builder模式在抽象类方面具体化了类的组装过程,类的功能可以由不同的子类完成;而bridge模式则强调了对类的整体实现,整个类的实现功能都由指定的类完成。从某个角度来看,builder模式应该更加灵活~~~求指正!原创 2011-08-05 17:46:52 · 678 阅读 · 0 评论 -
两个adapter模式的代码~
(1)class adapternamespace DesignPattern_Adapter{// class Adaptee class Adaptee { public: void SpecialRequest() {}转载 2011-08-03 16:38:01 · 660 阅读 · 0 评论 -
C++ - Adapter模式
设计模式 - C++ - Adapter模式1. 适配器(Adapter模式、Wrapper模式、包裹器模式)的现实意义 (1) 手机充电:现在的手机数据线一般可以充当着充电连接线的角色。我们需要充电的时候只要把数据线接上电脑USB口即可。如果身边没有电脑,转载 2011-08-03 16:07:26 · 958 阅读 · 0 评论 -
C++设计模式:Template Method 模式
基类用一个public nonvirtual 成员函数访问protected virtual成员函数,子类在需要的时候可以选择Overriding那个protected virtual成员函数,如果是个pure protected virtual成员函数,那就必须Overridi转载 2011-08-12 15:59:15 · 795 阅读 · 0 评论 -
c++ 责任链模式
责任链模式(Chain of Responsibility)的目标是使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递请求,直到有一个对象处理它为止。结构图为:用一个采购的例子来说明,采购人员在进行采购前需经转载 2011-08-16 09:10:26 · 1015 阅读 · 0 评论 -
游戏中分层状态机的实现
状态机的实现方式有很多种,一般都使用比较简单的switch case方式来实现对事件的处理和状态的转移,如下所示:[html] view plaincopyvoid ProcessEvent(Event event) { switch(state) { case StateA:转载 2014-10-25 01:21:51 · 3005 阅读 · 0 评论