.Net Framework源代码中的模式前言

  随着Visual Studio 2008的发布,微软根据MS-RL协议向开发人员提供了.NET Framework的源代码,包括基础类库 (BCL)、 ASP.NET、 WinForms和WPF等代码。.NET Framework是.NET平台的基础架构,都开放源代码,为开发人员更加深入研究.NET 技术细节提供了极大便利,也为开发人员如何构建一个优秀的软件开发框架提供了很好借鉴。

  构建一个优秀的软件开发框架,必然会使用设计模式。.NET Framework作为一个优秀的软件开发框架,设计模式无处不在,通过分析这些代码,为我们正确使用设计模式提供很大帮助。

  首先理解框架和模式的相关概念。

  框架:在特定领域基于体系结构的可重用的设计。

  模式:解决某一类问题的方法论。Alexander给出的经典定义是:每个模式都描述了一个在我们的环境中不断出现的问题,然后描述了该问题的解决方案的核心。通过这种方式,你可以无数次地使用那些已有的解决方案,无需在重复相同的工作。

  为什么要用框架。

  因为软件系统发展到今天已经很复杂了,特别是服务器端软件,设计到的知识,内容,问题太多。在某些方面使用别人成熟的框架,就相当于让别人帮你完成一些基础工作,你只需要集中精力完成系统的业务逻辑设计。而且框架一般是成熟,稳健的,他可以处理系统很多细节问题,比如,事物处理,安全性,数据流控制等问题。还有框架一般都经过很多人使用,所以结构很好,所以扩展性也很好,而且它是不断升级的,你可以直接享受别人升级代码带来的好处。框架一般处在低层应用平台(如J2EE、.NET)和高层业务逻辑之间的中间层。

  为什么要用模式。

  因为模式是一种指导,在一个良好的指导下,有助于你完成任务,有助于你作出一个优良的设计方案,达到事半功倍的效果。而且会得到解决问题的最佳办法。

  框架与设计模式之间的关系。

  设计模式和框架在软件设计中是两个不同的研究领域。设计模式研究的是一个设计问题的解决方法,一个模式可应用于不同的框架和被不同的语言所实现;而框架则是一个应用的体系结构,是一种或多种设计模式和代码的混合体虽然它们有所不同,但却共同致力于使人们的设计可以被重用,在思想上存在着统一性的特点,因而设计模式的思想可以在框架设计中进行应用。

  框架和设计模式存在着显著的区别,主要表现在二者提供的内容和致力应用的领域:

  1.  从应用领域上分,框架给出的是整个应用的体系结构;而设计模式则给出了单一设计问题的解决方案,并且这个方案可在不同的应用程序或者框架中进行应用。

  2.  从内容上分,设计模式仅是一个单纯的设计,这个设计可被不同语言以不用方式来实现;而框架则是设计和代码的一个混合体,编程者可以用各种方式对框架进行扩展,进而形成完整的不同的应用。

  3.  设计模式比框架更容易移植。框架一旦设计成形,虽然还没有构成完整的一个应用,但是以其为基础进行应用的开发显然要受制于框架的实现环境;而设计模式是与语言无关的,所以可以在更广泛的异构环境中进行应用。             

  总之,框架是软件,而设计模式是软件的知识体,提升框架的设计水平。

时间: 2025-01-14 11:52:22

.Net Framework源代码中的模式前言的相关文章

DotNet Framework源代码中的模式(一)——目录

DotNet Framework源代码中的模式(二)--前言 DotNet Framework源代码中的模式(三)--Iteartor(迭代器模式) DotNet Framework源代码中的模式(四)--Abstract Factory(抽象工厂模式) DotNet Framework源代码中的模式(五)--Decorator(装饰模式) DotNet Framework源代码中的模式(六)--Prototype(原型模式) DotNet Framework源代码中的模式(七)--Factor

DotNet Framework源代码中的模式(二)——前言

随着Visual Studio 2008的发布,微软根据MS-RL协议向开发人员提供了.NET Framework的源代码,包括基础类库 (BCL). ASP.NET. WinForms和WPF等代码..NET Framework是.NET平台的基础架构,它的开放源代码,为开发人员更加深入研究.NET 技术细节提供了极大便利,也为开发人员如何构建一个优秀的软件开发框架提供了很好借鉴. 构建一个优秀的软件开发框架,必然会使用设计模式..NET Framework作为一个优秀的软件开发框架,设计模式

DotNet Framework源代码中的模式(八)——Builder(生成器模式)

将一个复杂对象的构件与它的表示分离,使得同样的构建过程可以创建不同的表述. 建造者(Builder)角色:给出一个抽象接口,以规范产品对象的各个组成成分的建造.一般而言,此接口独立于应用程序的商业逻辑.模式中直接创建产品对象的是具体建造者(ConcreteBuilder)角色.具体建造者类必须实现这个接口所要求的方法:一个是建造方法,另一个是结果返还方法. 具体建造者(Concrete Builder)角色:担任这个角色的是于应用程序紧密相关的类,它们在应用程序调用下创建产品实例.这个角色主要完

DotNet Framework源代码中的模式(三)——Iteartor(迭代器模式)

提供一种方法顺序访问一个聚合对象中各个元素,而又不需暴露该对象的内部表示. 以.NET Framework 2.0 System.Collections中类为例 System.Collections. IEnumerable public interface IEnumerable { IEnumerator GetEnumerator(); } System.Collections.ICollection public interface ICollection : IEnumerable {

.Net Framework源代码中的模式之Prototype(原型模式)

用原型实例指定创建对象的种类,并且通过拷贝这个原型来创建新的对象. 以.NET Framework 2.0 System.Collections中类为例. System.Collections. ICollection public interface ICollection : IEnumerable { } System.Collections. ICloneable public interface ICloneable { object Clone(); } System.Collect

.Net Framework源代码中的模式之Abstract Factory(抽象工厂模式)

提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类. 以.NET Framework 2.0 System.Data中类为例. 通过使用DbProviderFactory,只需要修改配置文件,就可以实现不同数据库访问的目的. System.Data.Common.DbProviderFactory public abstract class DbProviderFactory {   public virtual DbConnection CreateConnection() {

.Net Framework源代码中的模式之Decorator(装饰模式)

动态地给一个对象添加一些额外的职责.就扩展功能而言,Decorator模式比生成子类方式更为灵活. 以.NET Framework 2.0 System.IO中类为例. System.IO.Streampublic abstract class Stream : MarshalByRefObject, IDisposable{ public abstract int Read([In, Out] byte[] buffer, int offset, int count); public abst

一起谈.NET技术,.Net Framework源代码中的模式之Prototype(原型模式)

用原型实例指定创建对象的种类,并且通过拷贝这个原型来创建新的对象. 以.NET Framework 2.0 System.Collections中类为例. System.Collections. ICollection public interface ICollection : IEnumerable{} System.Collections. ICloneable  public interface ICloneable{ object Clone();} System.Collection

一起谈.NET技术,.Net Framework源代码中的模式之Decorator(装饰模式)

动态地给一个对象添加一些额外的职责.就扩展功能而言,Decorator模式比生成子类方式更为灵活. 以.NET Framework 2.0 System.IO中类为例.   System.IO.Stream public abstract class Stream : MarshalByRefObject, IDisposable { public abstract int Read([In, Out] byte[] buffer, int offset, int count); public