随笔分类 -  设计与架构

C++ 类层次结构的设计方法学
摘要:作者:Breaker <breaker.zy_AT_gmail>关于 C++ 类层次结构的设计方法学,note-to-self + keynote + cross-reference 式笔记本文精炼于 [CPP LANG] 12.4, 15.2 的 BBWindow 示例,只涉及 designSyntax 参考 [CPP LANG] Ch12, 15; [CPP PRIMER] Ch17, 18Play with bits 参考 [CPP OBJMODEL] 5.2keyword: class hierarchy, multiple inheritance, abstract cl 阅读全文

posted @ 2012-05-27 19:30 Hibernate4 阅读(1829) 评论(0) 推荐(0) 编辑

Anti-pattern
摘要:原文:http://en.wikipedia.org/wiki/Anti-pattern译文:http://www.yeeyan.com/articles/view/27472/7244[前言]design pattern是设计模式,通常是前人在软件开发过程中积累出来的解决一些问题的现成套路,按它们来做可获益无穷。anti-pattern也是一些现成的套路,但它们是现成的错误套路,避免它们则亦可获益无穷。本文译者Korner Hill的更多其它翻译和原创文章可在blog上找到http://blog.csdn.net/KornerHill。计算机领域内的很多词汇都缺少公认的中文翻译,anti-p 阅读全文

posted @ 2012-05-19 00:18 Hibernate4 阅读(198) 评论(0) 推荐(0) 编辑

代码坏味道——重构
摘要:1. Duplicated Code(重复的代码)臭味行列中首当其冲的就是Duplicated Code。如果你在一个以上的地点看到相同的程序结构,那么当可肯定:设法将它们合而为一,程序会变得更好。最单纯的Duplicated Code就是[同一个class内的两个函数含有相同表达式(expression)]。这时候你需要做的就是采用Extract Method提炼出重复的代码,然后让这两个地点都调用被提炼出来的那一段代码。另一种常见情况就是[两个互为兄弟(sibling)的subclasses内含有相同表达式]。要避免这种情况,只需要对两个classes都使用Extract Method,然 阅读全文

posted @ 2012-04-23 19:39 Hibernate4 阅读(167) 评论(0) 推荐(0) 编辑

Singleton之C++部分一
摘要:采用静态或者全局变量的实现方案由于C++不能保证静态或者全局对象的构造函数的调用顺序以及析构顺序。所以如果程序中有多个用此方法实现的Singleton类,它们之间又有某种构造依赖关系和析构依赖关系,就会造成灾难性的后果。所以,只有当肯定不会有构造和析构依赖关系的情况下,这种实现才是合适的。>优点实现简单,多线程下安全>缺点如果有多个Singleton对象的创建顺序有依赖时,千万别用;不是lazy loading,有些浪费。Meyers Singleton来控制构造顺序,但是不能控制析构顺序Scott Meyer在<<Effective C++>>3rd It 阅读全文

posted @ 2012-04-19 15:20 Hibernate4 阅读(210) 评论(0) 推荐(0) 编辑

一种线程安全的单例模式实现
摘要:#include <iostream> #include <vector> #include <bitset> #include <assert.h> #include <Windows.h> #include <process.h> using namespace std; class CSingleton { private: class CAssistForSingleton { private: CRITICAL_SECTION m_cs; public: CAssistForSingleton() ... 阅读全文

posted @ 2012-04-19 00:25 Hibernate4 阅读(261) 评论(0) 推荐(0) 编辑

iOS开发架构封装异步请求案例实现
摘要:iOS开发架构封装异步请求案例实现是本文要介绍的内容,主要是实现iOS开发中异步请求的封装案例,来看本文详细内容讲解。在找iOS开发相关的内容是,看到本文,与朋友们分享一下。论坛里看到一位兄台的问题:”异步请求能不能封装成一个公用的类?每个页面都要copy一下几个方法,感觉很麻烦“可能很多人也会有相同的问题,于是起一篇博客专门谈谈这个问题,主要想阐述一下编程思想及架构设计,权当抛砖引玉。闲话不多说,直接上代码://MyURLClass.h #import<Foundation/Foundation.h> @interfaceMyURLClass:NSObject{ @private 阅读全文

posted @ 2012-04-17 11:18 Hibernate4 阅读(699) 评论(0) 推荐(0) 编辑

Objective C--桥接模式
摘要:今天和大家分享的是桥接模式。在介绍桥接模式之前先和大家分享一个原则,那就是合成/聚合复用原则,具体定义是这样的:合成/聚合复用原则(CAPP),尽量使用合成/聚合,尽量不要使用类继承。合成(Composition,也有翻译成组合)和聚合(Aggregation)都是关联的特殊种类。聚合表示一种弱的‘拥有’关系,体现的是A对象可以包含B对象,但B对象不是A对象的一部分;合成则是一种强的‘拥有’关系,体现了严格的部分和整体的关系,部分和整体的生命周期一样。打个比方说,小鸟有两个翅膀,翅膀与小鸟是部分和整体的关系,并且它们的生命周期是相同的,于是翅膀和小鸟就是合成关系。然而相对于鸟群来说,一个鸟群有 阅读全文

posted @ 2012-04-17 00:18 Hibernate4 阅读(227) 评论(0) 推荐(0) 编辑

Cocoa如何应用设计模式
摘要:在Cocoa中到处都可以找到设计模式的应用,基于模式的机制或架构在Cocoa框架和Objective-C运行环境及语言中是很常见的。Cocoa经常把自己与众不同的工作机制建立在模式上,它的设计受到诸如语言能力或现有架构这样因素的影响。本部分包含设计模式:可重用的面向对象软件的元素一书中编目的大多数设计模式的介绍。每个设计模式都有一个总结性的描述,以及该模式的Cocoa实现的讨论。文中列出的都是Cocoa实现的模式,每个模式的讨论都发生在特定的Cocoa环境中。我们推荐您熟悉这些模式,您会发现这些模式在Cocoa软件开发中非常有用。Cocoa中设计模式的实现有不同的形式。下面部分中描述的一些设计 阅读全文

posted @ 2012-03-22 17:45 Hibernate4 阅读(380) 评论(0) 推荐(0) 编辑

iOS单例模式
摘要:单例设计模式。因为此模式经常引起争议,所以我想有必 要在此解释一下单例。原则上,单例是在程序生命周期里只被实例化过一次的 类。为了确保这一点,我们利用类的一个静态方法来生成和访问对象。因此, 你是通过以便利方法来访问某个类的单例对象的,而不是用 alloc/init或者静态autorelease初始化方法。在很多时候,我们使用一个某个类的唯一实例。最常见的就是一个程序的主类。以下是以名为 RootViewController 创建的一个单例函数:static RootViewController*sharedRootController = nil;+(RootViewController * 阅读全文

posted @ 2012-03-13 20:37 Hibernate4 阅读(631) 评论(0) 推荐(0) 编辑

设计只能在堆或者栈上创建的类
摘要:1,设计只能在堆上分配的类方法:将类的构造函数或者析构函数设置为protected(private会限制继承),迫使类对象在栈的构造时编译出错#include<iostream>usingnamespacestd;classOnlyHeap{public:OnlyHeap(){cout<<"construct"<<endl;}voiddistory()const{deletethis;}protected:~OnlyHeap(){cout<<"destruct"<<endl;}};intmain 阅读全文

posted @ 2012-02-27 15:53 Hibernate4 阅读(200) 评论(0) 推荐(0) 编辑

设计一个不能被继承的类
摘要:分析:这是Adobe 公司2007 年校园招聘的最新笔试题。这道题除了考察应聘者的C++ 基本功底外,还能考察反应能力,是一道很好的题目。在Java 中定义了关键字final ,被final 修饰的类不能被继承。但在C++ 中没有final 这个关键字,要实现这个要求还是需要花费一些精力。首先想到的是在C++ 中,子类的构造函数会自动调用父类的构造函数。同样,子类的析构函数也会自动调用父类的析构函数。要想一个类不能被继承,我们只要把它的构造函数和析构函数都定义为私有函数。那么当一个类试图从它那继承的时候,必然会由于试图调用构造函数、析构函数而导致编译错误。可是这个类的构造函数和析构函数都是私有 阅读全文

posted @ 2012-02-27 15:18 Hibernate4 阅读(246) 评论(0) 推荐(0) 编辑

设计模式——响应链模式
摘要:首先纠正国人的错误翻译,Responsibility 虽然字典里翻译为职责,然而确是由Response派生出来的词,结合此模式的原意,故此处应该翻译为响应更合适,或者说,垃圾字典里至少也应添加"响应"作为另一中文词.软件领域中的设计模式为开发人员提供了一种使用专家设计经验的有效途径。设计模式中运用了面向对象编程语言的重要特性:封装、继承、多态,真正领悟设计模式的精髓是可能一个漫长的过程,需要大量实践经验的积累。最近看设计模式的书,对于每个模式,用C++写了个小例子,加深一下理解。主要参考《大话设计模式》和《设计模式:可复用面向对象软件的基础》两本书。 响应链模式:使多个对象 阅读全文

posted @ 2012-02-23 11:28 Hibernate4 阅读(1288) 评论(0) 推荐(0) 编辑

何时适合使用单例模式
摘要:单例模式也是一种比较常见的设计模式,它到底能带给我们什么好处呢?其实无非是三个方面的作用:第一、控制资源的使用,通过线程同步来控制资源的并发访问;第二、控制实例产生的数量,达到节约资源的目的。第三、作为通信媒介使用,也就是数据共享,它可以在不建立直接关联的条件下,让多个不相关的两个线程或者进程之间实现通信。比如,数据库连接池的设计一般采用单例模式,数据库连接是一种数据库资源。软件系统中使用数据库连接池,主要是节省打开或者关闭数据库连接所引起的效率损耗,这种效率上的损耗还是非常昂贵的。当然,使用数据库连接池还有很多其它的好处,可以屏蔽不同数据数据库之间的差异,实现系统对数据库的低度耦合,也可以被 阅读全文

posted @ 2012-02-22 22:31 Hibernate4 阅读(605) 评论(0) 推荐(0) 编辑

构架、框架、设计模式之间的关系简述
摘要:2006-01-1609:04 作者: luoqx 出处: Java博客 责任编辑:方舟图1.0 构架、框架、设计模式之间的关系图一、软件体系结构和框架的定义 软件体系结构的英文单词是“architecture”.Architecture的基本词义是建筑、建筑学、建筑风格。 软件体系结构虽然根植于软件工程,但还处于一个研究发展的阶段,迄今为止还没有一个为大家所公认的定义。 《设计模式》中对框架的定义是框架就是一组相互协作的类,对于特定的一类软件,框架构成了一种可重用的设计。 软件框架是项目软件开发过程中提取特定领域软件的共性部分形成的体系结构,不同领域的软件项目有着不同的框架类型。... 阅读全文

posted @ 2012-01-14 19:48 Hibernate4 阅读(204) 评论(0) 推荐(0) 编辑

四种很相似的设计模式(State,Strategy,Bridge,Visitor)的区别
摘要:以上四种设计模式其实是很相似的。在我看来:1)State模式和Strategy模式可以视为一样的模式,他们的类图之类都是一模一样的。2)Bridge模式和Strategy模式摆在一起可能让人觉得诧异,因为前者是结构型设计模式,后者是行为型设计模式。但如果不考虑这点。他们就非常 相似了:以书中Bridge模式的例子(我记得不清楚了,只能说个大概),draw接口中的函数,有windows的实现版本,也有linux的实现版 本。这就是策略模式啊。所以我一直以为Bridge模式和Strategy模式的区别,关键在于用途不同:是否为了构件平台无关的开发基础设施,如果是就 是Bridge,否则就是Stra 阅读全文

posted @ 2012-01-14 19:36 Hibernate4 阅读(286) 评论(0) 推荐(0) 编辑

导航