摘要: 1、意图 使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系,将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。 2、核心思想 在责任链模式中,很多对象由每一个对象对其下家的引用而接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。客户并不知道链上具体的哪一个对象最终处理了这个请求,系统可以在不影响客户端的情况下,动态的重新组织链和... 阅读全文
posted @ 2010-06-24 18:04 红脸书生 阅读(542) 评论(0) 推荐(0) 编辑
摘要: 有时候需要把一组代码编译成一个库,这个库在很多项目中都要用到,例如libc就是这样一个库,我们在不同的程序中都会用到libc中的库函数(例如printf),也会用到libc中的变量(例如以后要讲到的environ变量)。本节介绍怎么创建这样一个库。 我们继续用stack.c的例子。为了便于理解,我们把stack.c拆成四个程序文件(虽然实际上没太大必要),把main.c改得简单一些,头文件stac... 阅读全文
posted @ 2010-06-24 11:06 红脸书生 阅读(1136) 评论(0) 推荐(0) 编辑
摘要: 4.1. 编译、链接、运行 请点评 组成共享库的目标文件和一般的目标文件有所不同,在编译时要加-fPIC选项,例如:-f后面跟一些编译选项,PIC是其中一种,表示生成位置无关代码(Position Independent Code)。那么用-fPIC生成的目标文件和一般的目标文件有什么不同呢?下面分析这个问题。我们知道一般的目标文件称为Relocatable,在链接时可以把目标文件中各段的地址做重... 阅读全文
posted @ 2010-06-24 11:05 红脸书生 阅读(2263) 评论(0) 推荐(0) 编辑
摘要: 1、意图 命令模式:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作 2、核心思想 命令模式:把一个请求或者操作封装到一个对象中,命令模式把发出命令的责任和执行命令的责任分割开来,委派给不同的对象。命令模式允许请求的一方和发送的一方独立开来,使得请求的一方不必知道接收请求的一方的接口,更不必知道请求是怎么被接收,以及操作是否执行,何... 阅读全文
posted @ 2010-06-24 10:16 红脸书生 阅读(501) 评论(0) 推荐(0) 编辑
摘要: 1、合成聚合原则 缘由:对象的继承关系是在编译时就定义好了,所以无法在运行时改变从父类继承的实现。子类的实现与它的父类有非常紧密的依赖关系,以至于父类实现中的任何变化必然会导致子类发生变化。当你需要复用子类时,如果继承下来的实现不适合解决新的问题,则父类必须重写或被其他更适合的类替换。这种依赖关系限制了灵活性并最终限制了复用性。 原则: 合成/聚合原则(CARP):尽量使用合成/聚合,尽量不要使... 阅读全文
posted @ 2010-06-24 09:24 红脸书生 阅读(512) 评论(0) 推荐(0) 编辑
摘要: 1、意图 保证一个类仅有一个实例,并提供一个访问它的全局访问点 2、核心思想 确保某个类只有一个实例(类的静态成员变量),而且自行实例化并向整个系统提供这个实例单例模式。 直接将类的构造方法改成私有的(所有类都有构造方法,不编码则系统默认生成空的构造方法,若有显示定义的构造方法,默认的构造方法就会失效),然后在一个public的实例化函数中调用私有构造函数,完成仅有的一次实例化。 3、优缺点分析... 阅读全文
posted @ 2010-06-24 08:33 红脸书生 阅读(455) 评论(0) 推荐(0) 编辑