系统设计
小鸡射手
这个作者很懒,什么都没留下…
展开
-
Abstract Factory、Builder和Factory模式的差异
采用Abstract Factory、Builder和Factory模式可以分离接口和具体实现,本文通过类比讨论三者间的差异。 下面举例说明三者间的差异,其中客户相当于模式使用者,商家相当于模式本身: 1. Factory类似购买品牌机,客户可以选择联想或DELL,商家的模式是提供各类品牌整机; 2. Builder类似购买组装机,商家的模式是客户提要求,商家组装后提供原创 2004-06-26 09:59:00 · 925 阅读 · 1 评论 -
OO设计原则
Robert Martin在《敏捷软件开发 原则、模式和实践》中,阐述了OO设计的5项原则。 1) The Single Responsiblilty Principle 单一职责原则 A class should have only one reason to change. 一个类应该仅有一种变化的原因。 职责是一种变化原创 2009-06-10 16:34:00 · 601 阅读 · 0 评论 -
TProactor
ACE Proactor模式在Windows性能很好,在Unix/Linux下由于各版本对异步IO支持的不同,ACE Proactor实现的性能不一定好(有的是采用Thread模拟异步IO)。 Terabit的POSIX Proactor实现TProactor在Windows、Unix/Linux下采用一致的接口,并在任何操作系统下提供不低于TPReactor的性能。原创 2009-05-17 09:47:00 · 2064 阅读 · 0 评论 -
采用ACE实现C++中的Plugin
本文描述小鸡射手采用ACE的Service Configurator Framework实现C++的plugin机制。 首先,定义一个export头文件,可以从/examples/APG/Svc_Config的HASTATUS_export.h复制修改。头文件定义如下:#include "ace/OS.h"#include "ace/Service_O原创 2007-02-06 16:01:00 · 1919 阅读 · 1 评论 -
J2EE核心模式再分类
J2EE核心模式提到了21个模式。如果采用Struts、Spring、Hibernate或EJB 3.0的容器,其中的一些模式已经由框架提供。本文小鸡射手将其再分类如下:了解:表示该模式已经由相关框架实现,或者由相关框架提供的功能替代;不建议:表示不建议使用该模式;一般:表示一般应用可能不使用该模式;重要:表示大多数应用均需要使用该模式。原创 2007-02-07 18:10:00 · 840 阅读 · 0 评论 -
C#中Plugin的实践
Plugin是一种相当灵活的可扩充、模块化机制,微软的Application Block不少采用了Plugin结构,本文讨论Plugin在C#中的一种实践。 Plugin是基于统一的接口,在C#中采用Reflection机制产生实现IPlugin的对象。假定接口为IPlugin,以下代码块示意动态产生IPlugin对象的代码段,其中dllName是实现IPlugin接原创 2004-07-05 19:33:00 · 4340 阅读 · 2 评论 -
C++的对象互斥访问
对象的互斥访问,C#有lock关键字,Java有synchronized关键字,Windows下的C++就只有通过CriticalSection API自己编程实现了。下面是小鸡射手的Mutex类: class Mutex { public: Mutex() {InitializeCriticalSection(&m_cs);} virtu原创 2004-07-02 07:21:00 · 1817 阅读 · 5 评论 -
Notification服务的一种实现
为了提供更好的服务,网站可以提供Notification机制以及时与自己的客户沟通。本文讨论Notification服务的一种实现方法。 自上而下,Notification服务可以分为三层: - 具体Notification服务的实现层,负责实现具体通知内容的构建; - Notification服务的管理层,负责获取Notificatio原创 2004-06-27 07:42:00 · 918 阅读 · 0 评论 -
CCS中的padding、border和margin
采用CSS可以将页面的内容和格式分离开来,本文记叙小鸡射手学习CSS控制格式的过程。 开始对CSS中的padding、border、margin以及width/height的关系不清楚,通过学习了解到: width/height表示元素的大小,是最内层的大小; padding表示元素到边框(border)间的距离; border表示边原创 2004-07-16 19:12:00 · 1746 阅读 · 3 评论 -
Singleton实现的反思
Singleton可算是最简单的模式,本文记述小鸡射手遇到的问题及反思。 对于Singleton,小鸡射手想能不能: 1. 将private static成员变量直接声明为Singleton类? 2. 将要调用的方法直接声明为static? 在项目中,采用VC++按方式1实现Singleton类,编译、链接一切OK。运行时却出现了内存方面的exception,经调原创 2004-07-13 19:59:00 · 1250 阅读 · 0 评论 -
包设计原则
Rebort Marti在《敏捷软件开发》一书中谈到了6条包设计原则。 3条包内聚性原则是关于颗粒度。分别是: 1) The Reuse-Release Equivalence Principle 重用-发布等价原则 2) The Common-Reuse Principle 共同重用原则。包内的类应该一起被重用。 3) The Common-Clo原创 2009-06-14 18:20:00 · 371 阅读 · 0 评论