摘要:考察如下应用:公司开发某种中间件产品,该产品的主要功能是从上位系统采集数据,并将采集到的数据做某种处理,然后下发到下级系统中。要求该产品要支持不同类型,不同数量,不同数据格式的上位系统,下发时统一发送符合某种规则或格式的数据流。此外,在增加或删除对某一上位模块支持的时候,无需从新编译该中间件产品。本文讨论不同类型,不同数量,不同数据格式的上位系统,在不需重新编译的情况下,动态添加与删除的技术。一.模块动态加载技术概述该技术由配置文件和一组设计模式组成,以配置文件为核心,根据配置文件提供的模块信息,通过反射技术实现了增加和删除新模块而无需重新编译系统的功能。二.动态加载模块部分的配置文件格式及注
阅读全文
随笔分类 - 设计模式
摘要:本文主要介绍本人再一个项目中应用设计模式思想的一些思路和心得,有使用不正确或不妥当的地方欢迎来信讨论。文章分为上、中、下三篇,上篇首先简单介绍了软件背景和基本业务流程,然后根据业务流程推导出策略模式中两个关键部件——可独立变化的“算法”和固定不变的“客户”调用结构的识别思路,以及给出了“算法”的接口模型。中篇主要介绍策略模式中另外一个重要部件——程序中“客户”调用结构的设计和代码。下篇主要介绍结合使用工厂方法、抽象工厂和单例模式创建具体“算法”的思路和架构代码。最近公司正在搞一个生产管理的项目,涉及到后台管理系统、条码系统和前端手持应用,我所在的Team负责开发一套适合客户公司管理人员适用的P
阅读全文
摘要:抽象工厂模式和Builder模式 最近要参加面试,于是乎又把设计模式拿出来过了一遍.由于每次在看到抽象工厂和Builder模式的时候总是有点迷糊,因此这次下了狠心,翻箱倒柜的找出英文版教材,中英对照,希望能把这两种模式搞清楚. 所有的创建型模式的本质目的都是为了更好的创建对象,抽象工厂和Builder模式也是如此,另外,两种模式还有一个共同的特点,就是将对象创建过程与使用过程相分离,用户在使用时只需知道该创建什么,而无需知道对象是究竟如何创建的.这样对象创建和使用的过程之间就呈现一种松耦合的形式,当创建过程有改动的时候只需对创建过程进行无需对使用过程作出任何修改.除此之外,两种模式同样都是被用
阅读全文
摘要:内存分配与回收,一直都是令C/C++程序员们头痛的事情,不使用指针会降低程序的灵活性,同时也等于放弃了C/C++语言最大的优势,而使用指针就必须保证在任何情况下都不能出错,否则后果的严重性相信每个程序员都深有体会无需多讲。因此,在指针的使用上面,所有的程序员都战战兢兢,如履薄冰,同时相信每个人也都在不停的思考,并且总结出一套适合自己的方法去解决这个问题。本文使用模版类建立了一个对所有类型指针都通用的内存管理模版,目的是实现如下最基本的功能: 1. 对任何指针变量均通用 2. 可以安全的分配所需的内存 3. 无需程序员操作,实现资源的自动释放类声明如下:templatetypename Tc
阅读全文
摘要:学习设计模式已经已经有一段时间了,一直没机会再实践中应用,没想到第一次成功使用设计模式的思想会是在SD结构的程序中。 这次分配下来一个比较急的任务,要求在原有通讯模块的基础上添加发送头包的功能,由于对原来程序通讯机制不是很了解,并且时间确实比较紧,因此没法重写这部分函数。研究了一下通讯模块中从文件中建立数据包的部分,发现程序中没有单独封包的函数,而是直接根据输入不同的包编号从文件直接定位该包的位置,读取256个字节,返回数据包中数据内容。这样若想添加的新数据包不再文件当中,就必须更改原来的函数才能实现。 原函数如下:void xs_get_data_package(LONG i_package
阅读全文
摘要:一.初识C# 一直以来我都认为C#语言仅仅是C++语言的完善版本,但在初次使用了C#以后,我才认识到过去的想法是错误的。C#无论从语言的风格、编译环境的设置、开发框架的定义来看都与C/C++相去甚远,甚至与JAVA接近的程度更甚C/C++,从框架生成的程序结构来看,C#在应用领域的定位上应该也是与JAVA相似的(难道目的是要抢占J2EE的地位不成?)。就目前对其简单的使用来看,即便是编写Windows应用程序,C#语言似乎也并不支持MFC框架,并且不支持STL模板,甚至不能include头文件,这让作为一名C/C++程序员的我感到很不适应。但是,对C#短暂的接触后发现,Microsoft .N
阅读全文

浙公网安备 33010602011771号