当前位置:资讯中心主页 >NET编程 >文章内容
- 用c#研发程式应用框架
- 来源:互联网作者:互联网 发布时间:2008-04-02 16:33:51
-
- 域名惊喜价格 cn域名1元注册
- com域名39.9元
域名注册
- 主机按月支付,低至19元/月
- 超大流量,可开子站点
虚拟主机
- 特惠VPS168元/月,4-8M独享带宽保证
- 独立操作系统,无限开站点
VPS主机
用c#研发程式应用框架
Willsound(willsound@163.com)
简介:
框架是一种制定的通用的应用程式研发基础软件,在其基础上能研发完整的关且功能完善的软件。在最近几年里,已成功实现了某些应用领域的研发框架,比如说用户介面研发及数据访问研发等。如果能成功的研发出一个框架,这将是个突破,因为这意味着研发将不再从头开始实现某个功能:比如一个框架如果能成功的生成一个用户介面,哪么他也能生成做任意的用户介面。例如,如果我们使用java Applets 和servlets,我们仅仅需要重写某些方法,就能实现我们自己的代码。这其中java Applets和servlets就是我们所使用的框架平台。Microsoft也实现了MFC类库存,更有本文涉及的.net Framework (当然还用Borland的vcl)。
先决条件:
本文的读者应该有c#的使用经验,或对java applet 和 servlet有基础的了解,以便能理解本文所涉及的一些基本概念。
工具:
本文所写代码在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>
以上内容由 华夏名网 搜集整理,如转载请注明原文出处,并保留这一部分内容。
“华夏名网” http://www.sudu.cn 和 http://www.bigwww.com 是成都飞数科技有限公司的网络服务品牌,专业经营虚拟主机,域名注册,VPS,服务器租用业务。公司创建于2002年,经过6年的高速发展,“华夏名网”已经成为我国一家知名的互联网服务提供商,被国外权威机构webhosting.info评价为25大IDC服务商之一。 - (阅读次数:64)
- 上一篇: MattPietrek访谈,谈他对.NET的看法及Numega工作情况(英文) 下一篇: .Net跨平台计划最新进展:Mono0.13
- [
收藏] [
推荐] [
评论] [打印本页] [返回上一页][关闭窗口]


