大家好

来源:互联网 发布:什么是优化 编辑:程序博客网 时间:2024/04/28 08:53

      第一次来,不知写什么.用DELPHI快5年了.觉得在程序开发上还是没有完整的模式.每个项目中同样的问题但用到的技术呀,实现方式呀还是不能确定,不知道哪一种是解决这类问题的最好方式,还是不断在尝试新的实现模式.

    总的来说前三年都处于混乱的状态,对程序根本不能把握,处于认为实现技术是第一重要的,只是在想着这些控件呀,系统函数呀如何使用,对系统框架设计不是很重视,做过几个项目后,有的软件开发了好几个版本,对业务很熟悉了,但对软件不满意,总觉得实现的不好,不流畅,没有觉得有什么OOP的思想只是有N多个类,之间的关系也复杂,一动而牵全身,什么界面,业务分离也没有体现。想重新设计,看怎么样才能体现设计思想,又将OBJECT PASCAL 仔细的看了一遍,对里面的基本元素有了更好的理解,有了一个整体的概念而不是原来一个个独立的技术.原来对线程总觉得是高深的技术,将<WINDOWS核心编程>一书仔细看了一下,对线程, 内核对象,内存分配,消息机制有了了解,尤其是对内存分配中堆的概念实在是太有用了,原来根本不考虑对象在内存中的位置问题,只是随便使用,但应用了堆之后对象的管理就更容易了,尤其是有大量的对象要管理的时候.对于实现可重用的树操作类非常有用.

  原来类之间的复杂耦合让代码的可移植性和可维护性大大降低,但应用方法指针可以解决这个问题,让你的类之间耦合降到最低,配合接口的使用可以大家提高类的可替换性.

TOnSocketSendBufEvent=function (ALocalName:String;Port:Integer; var Buf; Count: integer): Integer of object ;

TOnGetItemIDEvent=function (Const ASize:Integer;Var Index:integer):HTREEITEM of Object;
TOnReceivePackEvent=procedure (TCPHeadPack:TTCPHeadPack;AIndex:Integer) of Object;

  ITCPSocket=Interface
    Function  OnSocketSendBuf   :TOnSocketSendBufEvent;//发送数据
    procedure SetOnGetItemID(AOnGetItemID:TOnGetItemIDEvent); //取得包应保存位置的指针
    procedure SetOnReceivePack(AOnReceivePack:TOnReceivePackEvent);//处理收到的包
  end;

上面是用TCP方式连接时的接口,Server 端和Client 端都是一样的.它只是发数据和收到的数据保存到给定的位置.不在这里面做任何的业务处理代码.用的是TSocketServer和 TSocketClient实现的.程序还没有完全完成其它的完成后在贴.基本的思想是:T接收包缓冲区,是个动态数组,将收到的包都保存在这里, T包处理厂,从T接收包缓冲区中取得数据包,分析处理.每个不同的业务只要重写T包处理厂中就可以了,通信层是通用的.和系统的SENDMESSAGE的实现是相同的,你不用管消息是如何收到的,你只要根据不同的消息处理结果就可以了.当然有的包是发出去后等待返回结果才能进行下一步的,有的是只管发出去就不管了.系统的SENDMESSAGE和POSTMESSAGE的实现模式完全可以利用到这里,我觉得是一样的,现在正在努力实现中.

一点点的贴吧.整理一下堆在程序中应用的例子,贴出来向大家请教.

原创粉丝点击