电脑桌面
添加盘古文库-分享文档发现价值到电脑桌面
安装后可以在桌面快捷访问

泛型设计范文

来源:漫步者作者:开心麻花2025-11-191

泛型设计范文(精选6篇)

泛型设计 第1篇

所谓泛型就是将类型也作为一种参数来进行指定,有了泛型后,类型不再是一成不变,可以通过泛型参数来指定。泛型允许在编译时间实现类型安全,它允许创建一个数据结构而不限于一种特定的数据类型,当使用该数据结构时,编译器保证它使用的类型是相一致的。泛型提供了类型安全,但是没有造成任何性能损失和代码臃肿。

2 没有泛型的缺点

在没有使用泛型的程序设计中,类型是固定的,这有时会给开发带来很大的不便,下面的代码片段说明这个问题。

List myList=new ArrayList();

myList.add(new Integer(1));

Integer i=(Integer)myList.get(0);

上面的代码是没有使用泛型的一段标准代码,但其实有很多问题。

声明创建列表时不能告诉系统列表中将要存放何种类型的对象,开发人员注意不应该将其他类型的对象添加到列表中,这样安全性不高。若有其他开发人员向列表中添加了其他类型的对象,程序可能运行不正常,但那要到运行时才能发现,在编译时无法得知。

每次从列表中取出对象时都必须对引用进行强制类型转换,因为没有使用泛型的列表将任何对象都作为java.lang.Object类型返回。其实这一代码的开发是没有什么实际价值的,增加了工作量还降低了代码的可读性。

3 使用泛型的优点

上面我们介绍了没有泛型带来的不便,正是为了解决这些问题,泛型技术诞生了,有了泛型技术后,类型不再是固定的,也可以作为一种参数来指定,下面的代码片段说明了这个问题。

ListmyList=new ArrayList();

myList.add(new Integer(1));

Integer i=myList.get(0);

上述代码通过泛型语法指定了列表中元素的类型,“”就是通过泛型参数告诉系统此列表中只能存放Integer类型的元素。

由于知道了元素的类型,从列表中取出元素时不再需要进行强制类型转换,不但提高了代码的执行效率,而且增强了代码的可读性。

4 泛型程序设计

1)泛型类的声明

泛型类声明与普通类没有太大的区别,只是在类声明中加入了一个或多个类型变量的声明,基本语法格式为:

对于泛型的类型变量需要使用一对尖括号(<>)括起来,并放在类名的后面,类型变量同时可以有多个,类型变量之间使用逗号分隔。

下面给出一个使用自定义泛型类的简单案例,代码如下:

从本例中可以体会到,通过使用泛型类可以使程序具有更大的灵活性,成员变量与方法的类型可以在实际调用时再确定,而不像原来在开发时就确定。同时避免了使用Object类型来替代所有类型时很多的强制类型转换,简化了开发,提高了效率。

2)泛型方法的开发

泛型方法声明基本语法格式为:

泛型方法既可以在普通类中定义,也可以在泛型类中定义;泛型方法的类型变量用一对“<>”声明,可以有多个类型变量,各类型变量之间用逗号分隔;泛型方法的类型参数声明要放到方法返回类型声明之前。

下面给出一个使用自定义泛型方法的简单案例,代码如下:

从本例中可以看出,使用泛型方法可以开发出参数和返回值类型不固定的方法,在实际调用时再确定它们的类型,调用泛型方法时可以明确给出泛型参数的类型,也可以不明确给出,系统会根据调用的情况自动分析确定。

5 结束语

泛型功能将类型安全的任务从程序员转移给了编译器。不需要编写代码来检测数据类型是否正确,会在编译时强制使用正确的数据类型,减少了类型强制转换的需要和运行时错误的可能性。所以我们在程序设计时根据实际情况可采用泛型程序设计。

参考文献

[1]Liang Y D.Introduction to Java Programming[M].北京:机械工业出版社,2008.

[2]Eckel B.Thinking in Java[M].北京:机械工业出版社,2002.

[3]Deitel H M.How to Java Program[M].北京:清华大学出版社,2004.

[4]叶乃文.JAVA核心技术卷I[M].北京:机械工业出版社,2008.

[5]陈昊鹏.JAVA核心技术卷II[M].北京:机械工业出版社,2008.

泛型设计 第2篇

1 系统设计

1.1 设计目的

本系统设计要求基于Android开放平台实现青奥会赛事推送系统,主要实现赛事信息推送功能,使用户能够接收赛事信息。用户在系统中选择订阅消息时进入订阅界面,订阅界面提供了几种赛事主题供用户进行选择,用户可以选择多个主题进行订阅。

1.2 项目实施

本系统采用Windows系统下Android开发平台作为开发前端,服务器端Web开发平台作为后台开发,开发语言使用Java语言。项目实施过程包括:基于Android平台的手机客户终端的设计和服务器端开发。

1.3 系统性能设计

1)支持不同分别率(HVGA:640*480,QVGA:320*240)和不同尺寸(2.3英寸及其以上)屏幕;

2)支持不同固件版本(2.2及其以上)。

2 系统实现

本系统的客户端可以选择不同的订阅主题进行青奥会赛事消息查看,后台服务器对订阅主题进行登记,经过主题匹配及网络服务质量检查之后,将匹配成功的消息推送给相关主题的客户。

Android推送消息的实现方式[2]包括:轮询(Polling):应用程序周期性地与服务器进行通话,查询是否有新的消息到达;SMS(通过发送短信并解析短信内容来获取服务器端的指令):在Android平台上,通过拦截SMS消息并且解析消息内容来了解服务器的意图。

设计过程中还要考虑到消息的延迟、网络资源和电力资源以及成本高低,以及Android操作系统允许在低内存情况下杀死系统服务,所以通知服务很可能被操作系统杀死的问题,我们采用了第三种方案持久连接(Push),通过良好的设计该方案可以解决上述性能问题,来弥补上述一些缺陷,以便让该方案可以更有效地工作。

本系统在消息推送功能上就是Push方案,服务器端采用了Androidpn服务器,客户端采用了XMPP协议接收服务器推送消息。

2.1 服务器端

服务器端基于Openfire开源工程,用Java语言实现[3]。与Openfire工程不同的是本系统服务器Web部分采用的是Spring框架,这降低了应用开发的复杂性。服务器端一方面监听特定端口上的XMPP(可扩展通讯和表示协议,The Extensible Messaging and Presence Protocol,XMPP)服务,负责与客户端的XMPPConnection类进行通信,为用户注册、身份认证、推送消息提供服务;另一方面负责接收用户的Web请求。

本系统的服务器端提供广播推送、依据设备id的定点推送。以及可以面向特定主题订阅者实现推送。服务器对每个并发的客户端的连接进行认证,对认证通过的客户端创建会话,客户端与服务器端之间的通信就在该会话的上下文中进行。

2.2 客户端

移动终端建立网络连接可以采用XMPP协议,也可以使用HTTP协议(Hypertext Transport Protocol,超文本传送协议)。

本系统客户端利用基于Java的开源XMPP协议包asmack中提供的XMPPConnection类与服务器建立持久连接,并通过该连接进行用户注册和登录认证,同时接收服务器发送的通知。由于客户端保留一个长存的HTTP连接,等待一旦服务器有新的信息时,就立刻接收信息,该方式比周期性以HTTP的GET和POST的方式去抓取服务器端信息更有效率。

由于大多数防火墙对使用HTTP的客户端获取和留言没有任何障碍。因此,即使使用XMPP协议的TCP端口被拦截,服务器也能正常地侦听一般的HTTP端口,其上的信息也能保持畅通。客户端实现步骤包括创建服务进程、建立与XMPP服务器的连接以及断开与XMPP服务器的连接。最终在Android模拟器上实现的客户端接收推送效果如下图所示。

2.3 异步推送的实现

系统设计时,考虑到发布者和订阅者不需要知道对方的任何信息,甚至不需要知道对方是否存在,就可以实现消息的异步传递,因而系统在设计时采用了队列,具体使用泛型实现,对不在线用户需要接收的信息进行存储。

3 总结

本系统以“智慧青奥”系统为入手点,针对青奥会赛事推送服务进行了系统研究,针对系统设计要求采用android2.2智能系统平台,便于产品的升级和维护,并且提供了相应接口可极大地拓展系统功能。系统针对服务器端和客户端进行了研究,并针对用户不在线情况进行了探讨,利用泛型实现了异步消息推送,可移植性好,资源功能扩充性能优越。

摘要:针对基于Android平台的南京青奥会赛事推送系统的需求,服务器端采用了Androidpn服务器实现了Push推送方式,客户端采用了XMPP协议接收服务器推送消息,并提出了一种基于泛型的异步消息推送方案,最终实现出本赛事推送系统。

关键词:Android平台,赛事推送系统,异步消息推送,泛型

参考文献

[1]南京市“十二五”智慧城市发展规划[Z].2012.

[2]Jclick[EB/OL].(2011-10-26).http://www.iteye.com/topic/1117043.

C#中的泛型机制 第3篇

随着计算机技术的发展,Mcllroy提出了可重用软件部件的概念即将常用算法和基础数据结构制作成可重用的部件,就像生产中的零配件一样,这样做不久可以提高软件开发的速度,而且可以提高软件产品的质量。这种技术的关键是部件需要具有通用的特性,解决问题的方法就是建立抽象数据类型,以及建立给予抽象数据类型的算法。这种需要放映到了当时流行的程序设计语言ADA中。

ADA语言是美国国防部使用的标准高级语言,具有结构化语言PASCAL任务和处理异常的情况。一个ADA语言程序是由一组程序包组成,程序包与外部的交流通过接口规格完成,在接口规格中允许包含抽象数据类型和抽象算法描述。如下例:

ge ne ric后面的ELEM数据类型和add函数的具体结构和实现没有提供,但在example包中的算法可以直接使用ELEM和add。利用这种具有抽象数据类型和函数的程序包,可以设计出可重用程序更高的部件。因此,这种基于数据抽象的方法在可重用部件开发中得到了广泛的使用,并将这种方法称为泛型(generic)技术。

目前,随着面向对象技术和可重用部件技术的广泛应用,有更多的语言中包含了泛型编程机制,如ML中的多态函数,EIFFEL中的类型参数,特别是C#2.0正式应用了泛型机制,也有越来越多的人开始了解和使用泛型编程技术,然而,到底什么是泛型编程以及它的作用至今仍然不为大多数人所了解,这往往会引起一些使用中的问题。

2 泛型程序设计的主要作用

从起源来看,泛型程序设计思想来自代数中算法的设计。比如有向图中路径的处理问题,有Warshall的图传递闭包算法、Floyd的所有点最短路径算法以及网络中的最大容量路算法等,这些算法均基于闭半环的代数结构,而且可以通过闭半环中的两种基本操作将它们统一为一个通用算法,提高算法的可重用性。从上面这两个使用泛型程序时间思想的例子可以看出,泛型程序设计思想可以定义为一种通用程序的设计方法,这种方法主要基于数据抽象和过程抽象的原则,通过充分挖掘代码自身的抽象性来实现重用。这种泛型设计能比较清楚地阐明了泛型程序设计的工作方式的特点。

因此,根据上面的分析,泛型设计可以形象地转述为:所谓泛型程序设计,就是在程序设计的过程中,可以根据需要引入类型或操作作为参数,并以此为基础,编制出更具通用性的程序。这也就成为我们研究中的知道思想。

泛型程序设计思想的作用在于能编写出清晰、易理解、可重用的程序,能反映程序中解题算法的实质,是编写抽象算法程序的有利工具,它在很多领域有着非常广泛的应用前景。

例如,在形式化软件开发方法的研究中,会使用很多数学公式来描述和推导算法,这种符号是与计算机的实际表现无关的,对这种推理系统的描述就可以采取泛型的方法。

3 CLR中的泛型扩展

正如使用任何新技术一样,明白它的好处所在会有所帮助。熟悉C++模板的人将会发现,泛型在托管代码中具有相似的用途。如果把CLR泛型和C++模板进行比较,会发现泛型具有一些好处,它不存在以下两个常见问题:代码臃肿和开发人员混淆。

CLR泛型具有一些好处,如编译时类型安全、二进制代码重用、性能和清晰性。例如,假设有两个集合类:SortedList (Object引用的集合)和GenericSortedList(任意类型的集合)。

A、类型安全:当用户向Sorte dLis t类型的集合内添加String时,String会隐式强制转换为Obje ct。同样,如果从该列表中检索String对象,则它必须在运行时从Object引用强制转换到String引用。这会造成编译时缺少类型安全,从而使开发人员感到厌烦,并且易于出错。相反,如果使用GenericSortedList(T的类型被设置为String),就会使所有的添加和查找方法使用String引用。这允许在编译时(而非运行时)指定和检查元素的类型。

B、二进制代码重用:为了进行维护,开发人员可以选择使用Sorte dLis t,通过从它派生Sorte dLis tOfString来实现编译时的类型安全。此方法有一个问题,那就是必须对于每个需要类型安全列表的类型都编写新代码,而这会很快变成非常费力的工作。使用GenericSorte dLis t,需要执行的

全部操作就是将具有所需元素类型的类型实例化为T。泛型代码还有一个附加价值,那就是它在运行时生成,因此,对于无关元素类型的两个扩展(如GenericSortedList和GenericSorte dLis t)能够重新使用同一个实时 (J IT) 编译代码的大部分。CLR只是处理细节代码不再臃肿!

C、性能:如果类型检查在编译时间进行,而不是在运行时间进行,则性能增强。在托管代码中,引用和值之间的强制转换既会导致装箱又会导致取消装箱,而且避免这样的强制转换可能会对性能产生同样的负面影响。最近针对一个由一百万个整数组成的数组进行了快速排序法基准测试,结果表明泛型方法比非泛型方法快三倍。这是由于完全避免了对这些值进行装箱。如果针对由字符串引用组成的数组进行同样的排序,则由于无需在运行时执行类型检查,因此使用泛型方法后性能提高了20%。

D、清晰性:泛型的清晰性体现在许多方面。约束是泛型的一个功能,它们会禁止对泛型代码进行不兼容的扩展;使用泛型,将不再面临那些困扰C++模板用户的含混不清的编译器错误。在GenericSorte dLis t示例中,集合类将有一个约束,该约束使集合类只处理可进行比较并依此进行排序的T类型。同样,通常可以使用名为类型推理的功能来调用泛型方法,而无需使用任何特殊语法。当然,编译时类型安全可以使应用程序代码更加清晰。

4 C#泛型机制的特点分析

泛型可以写出具有可重用性的软件组件代码。它是数据的一种类型,包含有相同的代码;然而,参数的数据类型在每次使用时可以改变。另外,数据的使用可以适应不同的数据类型。可以说,泛型是用于不同类型的相同代码的一个模板。每当使用泛型的时候,可以使用任何不同的自定义类型,而不必重写内部代码。

5 本文的工作总结

泛型程序设计思想被看成是继面向对象程序设计思想之后的一场新的软件设计思想的革命。在C#中的泛型程序设计思想主要体现是:基于抽象数据、抽象操作的泛型程序设计。认识泛型的重点是:泛型是通过类型参数化、模块化达到代码重用的目的。

参考文献

[1]王燕编著.面向对象的理论与C++实践[M].清华大学出版社, 1997.

[2]张晓坤, 谭立平, 车树良译.C#编程语言详解[M].电子工业出版社, 2004.

函数对象在泛型算法中的应用 第4篇

C++中的函数对象就是重载了操作符()的类的对象。那么它有什么特殊意义呢?《C++Primer》中说了:更加灵活的在泛型算法中使用。究竟怎样更加灵活了呢?让我们一个个的来发现。

1 传统的函数重载方法

如果我们想对一个数组a[N](成员可能是非基本变量类型)进行排序,可以使用以下几种方法:

方法一:重载<操作符

如果数组元素的类型没有定义过<操作符,手动重载定义,然后调用STL库函数sort(a.begin(),a.end());

使用方法如下面的代码:

注:Type为元素类型,N是数组长度常数

如果希望从大到小排序,在重载操作符<的时候,实际返回的是大于比较的结果,就可以了。

当然,如果a[N]是int等基本数据类型,或者其他不适宜重载操作符<的类型,却又想逆向排序(相对于正常操作符<生成的排序结果来说),就要使用下面的方法了

方法二:定义比较函数

如果没有重载操作符<,或者不希望按照操作符<所给的逻辑顺序排序,可以手动指定比较函数

这里是传递函数指针给sort函数,值得一提的是它的第三个参数也可以接受函数对象。这就是下面的方法了

2 使用函数对象的方法

使用函数对象结合模板类和模板函数更加简洁清晰地组织代码。函数对象就是重载了()的类对象,使用起来和函数很像,例如:

使用方法如下面的代码:

貌似在这里看不到有啥好处吧,和第二种方法不是一样的么?看起来也都一模一样。好处体现在使用了C++标准库STL提供的函数对象适配器(定义在头)之后:

标准库STL提供的函数对象适配器有很多,基本上所有的操作符都有对应的,就先举两个例子吧:

相当于生成一个函数对象,操作符()函数返回的分别是>和<的结果,所以使用函数对象的方法,可以简单的写成是这样:

函数对象因为是一个对象,所以还可以作为参数传递(当然函数指针也可以)。

3 创建接受函数对象的函数

看到这里,大家可能已经对在STL中使用函数对象的方式有所了解了。大家可能会更进一步想知道STL中的函数,比如sort函数是如何做到既可以接受不同参数类型的函数又可以接受不同类型的函数对象的。看了下面的例子大家就知道了:

在如上代码中,我们生成了一个模板类,一个模板函数。这样就实现了接受不同类型的函数和函数对象了。

看起来用函数对象和用函数指针代码复杂度也差不多,但是当我们需要进行dosomething(1.111,2.222,add);时,用函数指针的方法,不得不再重载一个实型参数的add函数。

而用函数对象的方法,由于已经定义了模板类,只需要

dosomething(1,2,Operation());就ok了。感谢C++的模板机制。

总结完函数对象的好处之一,我们再看下面下一个好处。

4 函数对象处理参数更灵活

假设有一个整数数组a[]={2,,4,8,2,3,0,4,9}要统计其中大于N(N的值不确定)的和。再假设我们现在有一个求和函数

用函数对象应该就可以这样写:

看到这里很明显了,求大于3的数字的和,就用3作为参数构造一个函数对象,大于N就用N作为参数构造一个函数对象。同样,使用函数作为sum的第三个参数,不得不重新写函数。充分利用了对象可以有成员变量的性质。

5 结论

函数对象单独使用起来和定义函数没有太大区别,但是将函数对象与C++的模板机制结合起来灵活运用,可以是代码更加简洁清晰。利用好这些C++的特性,可以使代码风格更加清新、精炼。

摘要:C++中的函数对象是一种特殊的对象,使用起来特别灵活。掌握并使用好函数对象可以大大精简代码。该文在介绍函数对象概念的同时总结了函数对象的几点应用。

关键词:函数对象,泛型算法,函数模版,C++语言

参考文献

[1]Lippman S B.C++Primer[M].4版.北京:人民邮电出版社,2008:450.

[2]沐枫小筑.C++指针探讨[EB/OL].http://blog.csdn.net/Muf/archive/2005/05/11/373734.aspx.

泛型设计 第5篇

.NET Framework提供了一个称为公共语言运行库的运行时环境,使用针对运行库的语言编译器开发的代码称为托管代码。在Microsoft.NET框架内,应用程序可以用好多种高级程序语言编写、创建,例如VB.NET、C#乃至COBOL.NET等等都可以编写.NET应用程序。而通过每一种遵守.NET规范的编程语言所编写的程序代码首先都得通过一种初始编译步骤从源代码变成.NET的公共标准语言:MSIL(微软中介语言:Microsoft Intermediate Language)。MSIL自身是一种完整的、和对象相关的语言,只有它才可能创建出应用程序。不论什么语言创建的应用程序,他们都使用同一个运行时环境--公共语言运行库。

.NET应用程序是以MSIL的形式出现的,只有在程序执行的时候才通过即时编译器(JIT)被编译为本机代码。

泛型一种类型占位符,或称之为类型参数。我们知道在一个方法中,一个变量的值可以作为参数,但其实这个变量的类型本身也可以作为参数。泛型允许我们在调用的时候再指定这个类型参数是什么。在.net中,泛型能够给我们带来的两个明显好处是--类型安全和减少装箱、拆箱。

2.架构设计

采用目前Web系统流行的三层应用结构:数据访问层、业务逻辑层(领域层)、表示层 (图1) 。

表现层:位于最外层(最上层),离用户最近。用于显示数据和接收用户输入的数据,为用户提供一种交互式操作的界面。

中间业务层:负责处理用户输入的信息,或者是将这些信息发送给数据访问层进行保存,或者是调用数据访问层中的函数再次读出这些数据。中间业务层也可以包括一些对"商业逻辑"描述代码在里面。

数据访问层:仅实现对数据的保存和读取操作。数据访问,可以访问数据库系统、二进制文件、文本文档或是XML文档。

3.框架实现

框架的语言实现采用C#语言,C#是微软公司为了能够完全利用.net平台优势而开发的一种新型编程语言。C#语言从C和C++演变而来,非常类似于Java,它是给那些愿意牺牲C++一点底层功能,以获得更方便和更产品化的企业开发人员而创造的。C#现代、简单、面向对象和类型安全。

3.1 框架数据库操作接口定义

数据库应用系统无非就是对数据库表进行增、删、改、获取等操作,框架完成对象同数据库之间的映射,实现对实体对象的常用操作包括获取单个实体对象、实体对象列表、删除、新增、修改实体对象等。

那么我们根据该原则利用泛型技术定义实现通用基本操作的接口,供外部程序调用。将它命名为IBaseDAL<T>。关键代码如下:

定义完基本接口,那么就可以为指定数据库表实体对象定义对应的数据操作接口。例如我要操作Webuser表,那么可以定义一个IWebuser接口对象,该接口对象继承自IBaseDAL<T>,那么就可以在IWebuser对象定义除基本操作以外的其它操作接口。

3.2 框架数据库数据访问层实现

实现通用基本操作接口定义和指定表操作接口定义后,就必须实现接口功能,以完成对数据库的操作。我们可以将这些实现放在DAL命名空间中。同样必须定义一个BaseDAL<T>对象,实现基本操作。关键代码如下:

完成数据库的基本操作实现,同样可以定义特定表数据操作对象。那么该对象必须同时继承于BaseDAL<T>, IWebuser。有了继承这两个对象,那么基本操作接口与特定表操作接口就可以同时暴露给外部调用者。

3.3 框架数据库业务逻辑层实现

业务逻辑层 (BLL) 看作是在数据访问层和表示层之间进行数据交换的桥梁,一般将应用系统业务规则集成到一个BLL中,同样,我们必须将数据访问基本业务定义一个基本对象,命名为BaseBLL<T>。关键代码如下:

同样可以定义特定表数据操作业务对象。那么该对象必须同时继承于BaseBLL<T>。有了继承,同时每个特定表业务对象都具有了基本的数据业务操作能力,同时可扩展自身的业务逻辑。

通过观察,我们发现该框架可将大部分共用数据操作逻辑封装在BaseBLL<T>中,在应用程序开发中可大幅减少代码开发量。由于应用程序大部分使用共用数据操作逻辑,因此也提高了应用程序的健壮性及可维护性。

4、结束语

应用软件系统的架构设计,不仅仅是技术的问题,从某种程度上来说,也是一个管理问题。一个好的应用软件系统架构,必须是能够支持团队开发的。同时,一个好的应用软件系统架构,不管其内部实现的复杂程度如何,其外在的使用接口必须是简单的,这样,才能够在实际的系统开发中取得预期的效果。

摘要:框架是一个应用程序的半成品。框架提供了可在应用程序之间共享的可覆用的公共结构。可有效提高应用程序复用性、扩展性、安全性及提高软件开发效率等。本文的目标就是利用.net泛型技术实现一个基于.net的通用应用系统框架。

关键词:.net泛型,web框架,通用

参考文献

[1]C#高级编程 (第6版) ..清华大学出版社

泛型设计 第6篇

1对象与方法

1.1对象

选取2007年1月至2012年12月于本院内科确诊为阳虚水泛型慢性心力衰竭的70例患者。其中,治疗组包括男20例,女15例,最小42岁,最大74岁,平均( 51. 43 ± 14. 27) 岁; 心功能Ⅱ级20例,Ⅲ级15例; 病程2年到12年,平均 ( 6. 46 ± 3. 13) 年。对照组包括男19例,女16例; 年龄最小41岁,最大75岁,平均 ( 52. 74 ± 14. 22 ) 岁; 心功能 Ⅱ 级22例,Ⅲ级13例; 病程2年到13年,平均( 6. 14 ± 3. 36) 年。两组患者性别、年龄、心功能分级、病程差异不明显,具有可比性。

1.2纳入标准

( 1) 满足《2007年中国慢性心力衰竭诊断治疗指南》[1]慢性心力衰竭诊断标准。( 2) 满足《中药新药临床研究指导原则———心力衰竭》[2]阳虚水泛证诊断标准。主症: 心悸气喘或不得卧,咯吐泡沫痰,面肢浮肿,畏寒肢冷。次症: 烦躁出汗,颜面灰白,口唇青紫,尿少腹胀,或伴胸水、腹水。舌脉: 舌暗淡或暗红,苔白滑,脉细促或结代。符合主症至少一项、次症至少一项、舌、脉至少一项者即可诊断为阳虚水泛证。( 3) 满足1928年美国纽约心脏病学会( NYHA) 心功能II级和III级诊断标准[2]。( 4) 签署知情同意书。( 5) 年龄40 ~ 75岁。

1.3排除标准

( 1) 合并出血性疾患者或严重肝、肾脏器疾患者。( 2) 妊娠及哺乳期妇女。( 3) 不能按要求完成30天治疗者。

1.4治疗方法

治疗组给予自拟附苈强心汤治疗,方剂组成: 炮附子先煎20 g、葶苈子30 g、黄芪30 g、泽泻20 g、丹参30 g、当归20 g、 桑白皮20 g、人参20 g、五味子9 g,以上诸药由本院中药制剂房熬制成浓缩煎剂,1剂汤汁分为2袋真空密封包装,规格150 m L/袋,每天1剂,分早晚2次服用。对照组根据病情给予常规西医强心、利尿、扩血管等西医基础治疗。两组患者均给予低盐低脂饮食。疗程均30天。

1.5观察指标

( 1) 治疗前当天及治疗30天后当天,各症候按严重程度进行积分比较。主症各项: 无: 0分; 轻度: 2分; 中度: 4分; 重度: 6分。次症各项: 无: 0分; 轻度: 1分; 中度: 2分; 重度: 3分; 舌、脉按有、无各计1分或0分。( 2) 治疗前当天及治疗30天后当天做心脏彩超,测量左室射血分数( left ventricular ejection fraction,LVEF ) 及左室舒 张末期内 径 ( left ventricular end diastolic diameter,LVDD) 。( 3 ) 安全指标: 治疗前当天及治疗30天后当天进行血常规、尿常规、肝肾功能检查,治疗期间如出现不良反应及时记录。( 4) 随访半年, 记录各组因心衰加重而再次住院的人数。

1.6疗效标准

根据《中药新药临床研究指导原则( 试行) 》[2]制定疗效标准,并以显效、有效统计总有效率。

1. 6. 1心功能疗效标准按1928年NYHA心功能分级判定心功能疗效。显效: 心衰基本控制或者心功能提高2级。 有效: 心功能提高1级,但不足2级者。无效: 心功能提高不足1级、无改变或死亡者。

1. 6. 2中医证候疗效标准显效: 主症及次症完全或基本消失,经治疗症候积分为0或减少不少于70% 。有效: 经治疗症候积分减少不少于30% 。无效: 经治疗证候积分减少少于30% 。

1.7统计学处理

以SPSS 17. 0统计软件处理所有数据。计数资料采用卡方检验,组内计量资料比较采用配对样本t检验,组间计量资料比较采用独立样本t检验。P < 0. 05时,认为差异具有统计学意义。

2结果

2.1治疗后心功能疗效比较

治疗组显效19例,有效14例,无效2例,总有效率94. 29% ; 对照组显效15例,有效11例,无效9例,总有效率74. 29% ,两组总有 效率差之 间的异具 有统计学 意义 ( χ2= 5. 29,P < 0. 05) 。见表1。

注: 与对照组比较,aP < 0. 05。

2.2治疗前后中医症候积分比较

两组积分较治疗前均明显减少( P < 0. 05) ,治疗后治疗组症候积分显著低于对照组,治疗前后差值比较,治疗组显著高于对照组( P < 0. 05) ,且治疗组中医症候疗效显效18例,有效15例,无效2例,总有效率94. 29% ; 对照组显效14例,有效13例,无效8例,总有效率77. 14% ,两组总有效率之间的差异具有统计学意义( χ2= 4. 20,P < 0. 05) 。见表2、 表3。

注: 与治疗前比较,aP < 0. 05; 与对照组比较,bP < 0. 05。

注: 与对照组比较,aP < 0. 05。

2.3治疗前后LVEF、LVDD比较

两组LVEF、LVDD均较治疗前有所改善( P < 0. 05) ,治疗后二者差别( P < 0. 05) 。见表4。

2.4半年内再住院率比较

随访半年,因心衰加重而再次住院的人数治疗组有6人,再次住院 率17. 14% ,对照组15人,再次住院 率42. 86% ,治疗组再次住 院率显著 低于对照 组( P < 0. 05 ) 。 见表5。

注: 与治疗前比较,aP < 0. 05; 与对照组比较,bP < 0. 05。

注: 与对照组比较,aP < 0. 05。

2.5两组不良反应及安全性

两组患者治疗期间均未出现不良反应,治疗前后对患者进行血常规、尿常规、肝肾功能检测,均在正常范围,两组患者均按要求完成30天治疗。

3讨论

心力衰竭是指由于各种原因导致心脏泵血或( 和) 充盈能力受损,并以喘憋、乏力、水肿为主要临床特征的一种临床综合征,现代中医学者往往根据其临床表现将其归属于中医 “水肿”“喘证”“心悸”“胸痹”“心胀”“痰饮”等范畴。中医认为,心脏功能减退多属阳虚,人体一切生理机能之正常运转皆依赖于阳气之充沛并运行于周身,心阳不足则泵血乏力,同时水液代谢失常,水饮上泛于肺则喘逆不得平卧,外泛于肌肤则水肿难消,一旦劳累则阳气更伤,诸症即加重。本方采用炮附子温助一身之元阳,葶苈子泻肺平喘、利水消肿, 黄芪、人参补益一身之气,共为臣药,佐以泽泻利水渗湿,丹参、当归活血通脉,桑白皮泄肺气之壅滞,五味子补肾敛肺, 防止肺气之耗散。现代研究证明,附子的不同制剂均具有强心作用,且在心功能不全的情况下强心作用更明显[3,4,5],其强心作用可 能与其所 含乌头碱、附子苷等 有效成分 有关[6,7]。葶苈子能显著增强心肌收缩力和心输出量,并能降低静脉压,同时通过提高肾小球滤过量起到利尿的作用[8]。 黄芪能够增强心肌收缩力,减少心肌耗氧量,改善左室重构和心肌缺血时游离脂肪酸代谢紊乱的状况等[9]。人参皂苷具有消除氧自由基,减轻缺血、缺氧情况下心肌细胞耐受力的作用[10]。泽泻含有大量钾盐,具有显著利尿作用,其醇提取物的水溶性部分能在不影响心率的情况下显著增加冠脉血流量,改善心肌供血[11]。丹参提取物能有效减轻心肌缺血损伤程度并加快心肌细胞恢复,同时具有显著抗血小板聚集、改善血流动力学的作用[12]。当归能够抑制胆固醇合成, 降低血脂,改善动脉粥样硬化,抗血小板聚集及抗血栓作用[13]。桑白皮主要含黄酮类化学物质,具有明显的降压、利尿、舒张血管以及抗炎、平喘等作用[14]。五味子则可具有显著减少心肌耗能及耗氧量的作用[15]。诸药合用,共奏温阳利水平喘,活血益气消肿之功。

本研究表明,治疗组心功能疗效总有效率高于对照组 ( P < 0. 05) ; 两组治疗后中医症候积分均较治疗前有明显改善( P < 0. 05) ,且治疗组改善更明显,治疗组中医症候疗效总有效率高于对照组( P < 0. 05) ; 两组治疗后左室射血分数与左室舒张末期内径均较前有明显改善( P < 0. 05) ,且治疗组优于对照组( P < 0. 05) ; 半年内再住院率治疗组明显低于对照组。且两组所有患者治疗期间均未出现不良反应,其血常规、尿常规、肝肾功能检测均在正常范围。自拟附苈强心汤治疗阳虚水泛型慢性心衰临床效果显著,值得临床参考并推广应用。

摘要:目的 观察自拟附苈强心汤治疗阳虚水泛型慢性心衰的临床疗效。方法 将70例确诊为阳虚水泛型慢性心衰的患者按照随机数字表法分为治疗组与对照组,每组35例患者,对照组根据病情采用常规西医治疗,治疗组给予自拟附苈强心汤治疗,30天后观察两组疗效及不良反应。结果 心功能疗效比较,治疗组总有效率高于对照组(P<0.05);中医症候积分比较,两组治疗后均较治疗前有明显改善(P<0.05),且治疗组改善更明显,治疗组中医症候疗效总有效率高于对照组(P<0.05);两组治疗后左室射血分数与左室舒张末期内径均较前有明显改善(P<0.05),且治疗组优于对照组(P<0.05);半年内在住院率治疗组明显低于对照组。两组所有患者治疗期间均未出现不良反应,其血常规、尿常规、肝肾功能检测均在正常范围。结论 自拟附苈强心汤治疗阳虚水泛型慢性心衰临床疗效显著,可有效改善阳虚水泛型慢性心衰患者的临床症状和体征。

泛型设计范文

泛型设计范文(精选6篇)泛型设计 第1篇所谓泛型就是将类型也作为一种参数来进行指定,有了泛型后,类型不再是一成不变,可以通过泛型参数来...
点击下载文档文档内容为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

确认删除?
回到顶部