当前位置: 首页 > news >正文

商务网站建设实训报告1600字wordpress主题ashley

商务网站建设实训报告1600字,wordpress主题ashley,怎样免费给自己的公司做网站,python在线运行作者#xff1a;巴哈姆特http://www.cnpack.org#xff08;转载请注明出去并保持完整#xff09;前面说过的封装其实是逻辑意义上的封装。逻辑封装是对某一特定逻辑功能模块的封装#xff0c;这个特定逻辑功能块可以是一个类#xff0c;当然也可以是一个包#xff0c;他们…作者巴哈姆特http://www.cnpack.org转载请注明出去并保持完整前面说过的封装其实是逻辑意义上的封装。逻辑封装是对某一特定逻辑功能模块的封装这个特定逻辑功能块可以是一个类当然也可以是一个包他们都有自己的逻辑边界。另一种封装方式我们通常叫它为物理封装物理封装其实是具体实现代码的物理集合他可以以bpl,dll,com等形式体现。     逻辑封装里对象的传递、数据共享与调用相对要简单的多只要我们引用类所定义的单元(unit)就可以直接访问类中public和published所公布出来的属性或方法在编译的时候编译器会把工程内所有引用的单元全部打包到exe中。逻辑封装最终是以一个独立的物理文件存在的。虽然简单但是无法实现物理上的切割一旦其中某个单元或代码段发生改动那么其他的单元或代码段也需要重新编译和连接。     而在物理封装中对象的传递、数据共享与调用要复杂的多了由于在编译的时候exe和dll或bpl是两个或多个文件所以你无法像在逻辑封装中那样简单的uses那个unit。而物理封装的好处是可以减少维护量因为每个dll都是动态调用的所以我们只需要更新我们改动过的相应的dll而其他的部分则可以不用改动。   用DLL封装对象    用DLL封装函数我想几乎是所有程序员熟悉到不能再熟悉的技术而且我们可以找到很多相关的书籍和资料。这里我们只讨论怎么用DLL来封装对象。    用DLL封装对象有以下的好处      一、可以节约内存。我们可以在使用到DLL资源的时候动态装载不用时释放。      二、提高代码重用。DLL在封装好以后我们可以使用任何一个支持DLL的开发工具来调用它。      三、可以使软件拆分成若干个小块这样可以有效的降低维护量。    注意如果你只为了减少软件体积而使用动态库那么我建议你还是放弃使用动态库吧。     当然想使用DLL封装对象也有一定的困难      一、调用DLL的EXE只能使用DLL中对象的动态绑定的方法。      二、DLL中的对象只能在DLL中创建。      三、在DLL和调用方都需要对封装的对象和被调用的方法进行声明。     我们来看下面的例子     首先我们声明一个类 typeTNewClass class(TObject)publicprocedure SayHello; virtual;// 注意这里不能使用静态方法必须使用动态绑定(或者说晚绑定)技术。// 至于为什么——虚方法表有关大家可以找其他资料详细研究^_^end;procedure TNewClass.SayHello; // 实现部分 beginShowMessage(Hello); end;新建一个Library项目 library dll;function GetObj: TNewClass; stdcall; begin // 创建对象Result: TNewClass.Create; end;exports GetObj; // 定义输出函数 end.下面我们创建一个EXE工程并且添加类的声明 typeTNewClass class(TObject)publicprocedure SayHello; virtual; abstract;{ 注意这里的声明方式和DLL中的不同这里必须声明为virtual方法还有由于此方法通过晚绑定用的是DLL中的实现因此EXE中可不写其实现而声明成abstract方法。 }end;function GetObj: TNewClass; stdcall; external dll.dll;之后我们可以添加一段测试代码来测试我们是否实现了DLL对象的共用 varNewClass: TNewClass; beginNewClass: GetObj;if not Assigned(NewClass) thenExit;tryNewClass.SayHello;finallyFreeAndNil(NewClass);end; end;我们可以看到这的确达到了EXE与DLL之间传递对象的目的。    但是有点麻烦首先在DLL工程与EXE工程都需要有被封装对象的定义。其次virtual和abstract必须正确使用。还有如果一旦对象发生变化那么两边的定义都需要修改这样难免会出点小错。     其实我们可以使用接口来进行对象的传递上面的例子我们可以稍微修改一下     首先我们定义一个接口 typeINewInterface interface(IInterface)procedure SayHello(); // 定义我们要的方法end;另外修改TNewClass类的声名 typeTNewClass class(TInterfacedObject, INewInterface)publicprocedure SayHello();end;实现部分无须改动。    接着我们修改先前的那个Library项目 library dll;function GetObj: INewInterface; stdcall; begin // 创建对象Result: TNewClass.Create; end;exports GetObj; // 定义输出函数 end.在EXE工程中我们直接引用接口定义的单元并且修改输出函数的声明 function GetObj: INewInterface; stdcall; external dll.dll;之后测试代码会成这样 varNewInterface: INewInterface; beginNewInterface: GetObj;NewInterface.SayHello;NewInterface: nil; end;这样做的好处是我们可以避免在多处重复说明一个要传递的对象的声明只要我们需要的方法的声明方式不动我们只需要改动TNewClass的实现代码而无需改动EXE程序中的任何代码部分。    PSDelphi的OpenToolsAPI接口就是这个通过接口共享对象原理的很典型的应用。(这是刘啸说的。老实说这个用法是我在写这个笔记的时候临时想到的因为从来没有使用过未经COM封装的interface。哪里知道竟然和OpenToolAPI一样的原理自己YY下^_^)     当然我们还可以使用COM来封装对象    首先我们建立一个名为NewCom的COM模型建立COM模型前一篇已经说过这里不再重复。    那么我们的调用代码就会变成这样 varNewCom: ITNewCom; beginNewCom: CoTNewCom.Create;// 当然和我前一篇一样使用CreateComObject函数也是一样的NewCom.SayHello;NewCom: nil; end;我们可以看到实现代码几乎没什么改动。那么假如我们什么时候要把SayHello的实现代码: ShowMessage(Hello);改成: MessageBox(0, Hello, SayHello, MB_OK);那么我们只需要更新这个COM文件调用它的EXE程序无须改动这就是接口的优点。转载于:https://www.cnblogs.com/keyvip/archive/2010/11/06/1870632.html
http://www.pierceye.com/news/449661/

相关文章:

  • 可以查企业备案的网站吗佛山住房和城乡建设部网站官网
  • 和初中生做视频网站怎么进入追信魔盒网站开发软件
  • 邯郸开发网站有哪些阳江市房产信息网
  • 快速网站推广公司丹阳房产网二手房
  • 做一个卖东西的网站黄村做网站的公司
  • 网站增长期怎么做广州seo推广优化
  • 怎么做拍卖网站吗免费网站推广入口
  • 农产品网站建设的主要工作岳阳seo招聘
  • 每年网站备案抽查惠州营销网站建设
  • 四川网站建设seo友汇网网站建设
  • 企业家居网站建设做公司网站方案
  • 特性设计的网站营销型网站建设的五力原则
  • 网站布局设计工具装修室内设计培训学校
  • 哈尔滨网络科技公司做网站中国建设官方网
  • 紫川网站建设做画找图网站
  • 郑州快速建站公司合肥学做网站app的学校
  • 除了做视频网站还能做什么网站wordpress手机站如何做
  • 域名注册最好的网站人才网站
  • 网站建设咨询云尚网络中铁十二局出国招工
  • 建站系统推荐做网站在哪里做
  • 贵州建设工程招标协会网站wordpress黑白主题
  • 怎么免费建立自己网站扁平化网站设计
  • 可以自己做漫画的网站北仑营销型网站制作
  • 免费网站统计代码有什么样的网站开发
  • 文山微网站建设湖南人工智能建站系统软件
  • 做网站时候编代码wordpress 技术博客主题
  • 成立网站建设工作领导小组seo网站关键词优化软件
  • 怎么兼职做网站网站建设 运维 管理包括
  • 乐清市住房和城乡建设规划局网站专业做家居的网站
  • 做3d打印网站苏州建设工程人才招聘网信息网站