现如今可能每个人都会在项目中使用着某种 IoC 容器,并且我们的意识中已经形成一些固定的使用模式,有时会很难想象如果没有 IoC 容器工作该怎么进展. IoC 容器通过某种特定设计的配置,用于在运行时决定将哪些组件注入到我们的代码中.这种配置可以是基于 XML 的映射,也可以是基于 Fluent API 的设计.但随着项目代码的不断增长,配置文件总是变得越来越冗长.此时,我们该寻求某种改进措施来增强代码的可读性和可维护性. 对于 IoC 容器来讲,自动注册机制是一项非常实用的功能,并且其在某些特…
一.什么是HOOK(钩子) API Windows消息传递机制,当在应用程序进行相关操作,例如点击鼠标.按下键盘,操作窗口等,操作系统能够感知这一事件,接着把此消息放到系统消息队列,然后到应用程序的消息序列中,应用程序通过Getmessage函数取出消息,然后调用DispatchMessage函数将这条消息调度给操作系统,操作系统会调用在设计窗口类时指定的应用程序窗口对这一消息进行处理,处理过程如图所示: 在<VC深入详解>一书将钩子过程比喻为警察为了抓逃犯而设置的检查站,基本原理也确实与此…
实现动机 工厂方法是最简单地创建派生类对象的方法,也是很常用的,工厂方法内部使用switch-case根据不同的key去创建不同的派生类对象,下面是一个伪代码. Message* create(int type) { switch (type) { case MSG_PGSTATS: m = new MPGStats; break; case MSG_PGSTATSACK: m = new MPGStatsAck; break; case CEPH_MSG_STATFS: m = new MSt…