选择显示字体大小

用c#开发程序应用框架


  简介:

  框架是一种定制的通用的应用程序开发基础软件,在其基础上可以开发完整的关且功能完善的软件。在最近几年里,已经成功实现了某些应用领域的开发框架,比如说用户介面开发及数据访问开发等。 如果能成功的开发出一个框架,这将是一个突破,因为这意味着开发将不再从头开始实现某个功能:比如一个框架如果可以成功的生成一个用户介面,哪么它也能生成做任意的用户介面。例如,假如我们使用java applets 和servlets,我们仅仅需要重写某些方法,就可以实现我们自己的代码。这其中java applets和servlets就是我们所使用的框架平台。microsoft也实现了mfc类库存,还有本文涉及的.net framework (当然还用borland的vcl)。

  先决条件:

  本文的读者应该有c#的使用经验,或者对java appletservlet有基础的了解,以便可以理解本文所涉及的一些基本概念。

  工具:

  本文所写代码在windows 2000+.net framework 发行版下测试。因为本文不需要图形介面,所以我使用写字板及c#命令行编译器实现。

  正文:

  在下面,你将看到如何实现一个应用程序框架模型的基础构造。开发应用框架时的基本核心就是template方法,它被隐藏在应用程序里面,控制应用程序的运行。它只在基类里面实现并且不能被改变。

  第一步就是构建框架的基类。在构建框架时基类是最重要的类。

  它里面有可以被重写的方法,最终用户可以重写这些方法以实现他们自己的应用程序。除了这些,这里还有一个template方法用于在框架进程中控制。我们将要构建的框架包括三个需要最终用户实现的抽象方法。他们是init,run和destroy.,它们必须要顺序实现。下面就是我们实现的代码:

// 这个类之所以被定义为抽象类,是因为用户方法还没有被实现

abstract class appframework

{

 // 构造器调用template方法

 public appframework()

 {

  templatemethod();

 }

 // 下面的方法需要最终用户实现

 public abstract void init();

 public abstract void run();

 public abstract void destroy();

 //template方法是框架的核心

 private void templatemethod()

 {

  console.writeline("initializing template engine");

  // template 方法顺序调用所需要的方法

  init();

  run();

  destroy();

  console.writeline("ending template engine");

 }
}

  请不要将template方法写为虚方法,因为这将给最终用户修改template方法的能力从而改变了整个框架的基础。也就是说这仅是框架开发都需要完成的任务,最终用户要做的就是从框架基类继承并重写这些在框架中定义的抽象类以实现自己定制的功能。

// 从基类继承

class myclass : appframework

{

 // 将抽象方法重写以实现定制的功能

 override public void init()

 {

  console.writeline("myclass::init");

 }

 override public void run()

 {

  console.writeline("myclass::run");

 }

 override public void destroy()

 {

  console.writeline("myclass::destroy");

 }

 // the main method defined

 public static void main(string [] arg)

 {

  myclass myclass = new myclass();

 }

}

  尽管main()函数与这些重写的函授放在一个类中是可行的,但最好是放在一个单独的类中。下面是全部的代码.

<code>

using system;

abstract class appframework

{

 public appframework()
 
 {

  templatemethod();

 }

 public abstract void init();

 public abstract void run();

 public abstract void destroy();

 private void templatemethod()

 {

  console.writeline("initializing template engine");

  init();

  run();

  destroy();

  console.writeline("ending template engine");

 }

}

class myclass : appframework

{

 override public void init()

 {
 
  console.writeline("myclass::init");

 }

 override public void run()

 {

  console.writeline("myclass::run");

 }

 override public void destroy()

 {

  console.writeline("myclass::destroy");

 }

 public static void main(string [] arg)

 {

  myclass myclass = new myclass();

 }

}

<code>


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons