您的位置:首页 > 其它

浅谈设计模式

2012-10-07 10:08 155 查看
工厂模式,反射机制,单例模式,适配器,编写引擎类,参数化设计

1 工厂模式: (将抽象方法放在工厂类里面, 当某个具体类需要用到某个抽象方法时通过适配器向工厂类筛选调用)

角色说明:工厂类(Creator):根据业务逻辑创建具体产品,由客户程序直接调用。

   抽象产品(Product):作为具体产品的基类,提供统一的接口,也是工厂类要返回的类型。

   具体产品(Concrete Product):工厂类真正要创建的类型。   

简单工厂的好处:

(1)、充分利用了多态性不管什么具体产品都返回抽象产品。

(2)、充分利用了封装性,内部产品发生变化时外部使用者不会受到影响。

  缺点是:如果增加了新的产品,就必须得修改工厂(Factory)。

2 抽象工厂模式可以向客户端提供一个接口,使得客户端在不必指定产品具体类型的情况下,创建多个产品族中的产品对象。这就是抽象工厂模式的用意

3 反射:公共语言运行库加载器管理应用程序域。这种管理包括将每个程序集加载到相应的应用程序域以及控制每个程序集中类型层次结构的内存布局。

程序集包含模块,而模块包含类型,类型又包含成员。反射则提供了封装程序集、模块和类型的对象。

可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型。然后,可以调用类型的方法或访问其字段和属性。

4 序列化:序列化是将对象状态转换为可保持或传输的格式的过程。与序列化相对的是反序列化,它将流转换为对象。这两个过程结合起来,可以轻松地存储和传输数据。

5 可访问性级别有哪几种:

public 访问不受限制。

protected 访问仅限于包含类或从包含类派生的类型。

internal 访问仅限于当前程序集。

(2.0) protected internal 访问仅限于从包含类派生的当前程序集或类型。

private 访问仅限于包含类型。

6 列举ADO.NET中的共享类和数据库特定类:

共享类:DataSet

DataTable

DataRow

DataColumn

DataRelation

Constraint (约束)

DataColumnMapping

DataTableMapping

特定类:(x)Connection

(x)Command

(x)CommandBuilder

(x)DataAdapter

(x)DataReader

(x)Parameter

(x)Transaction

7 O/R Mapping 的原理:利用反射,配置将对象和数据库表映射。

8 执行下面代码后:

String strTemp ="abcdefg 某某某";

Int i=System.Text.Encoding.Default.GetBytes(strTemp).Length;

Int j=strTemp.Length;

i=?

j=?

i=(14 ) ;j=(11 ) 中文两个字节

9 适配器(配合工厂使用): 使接口不兼容的类能够协同工作

使用场合:

(1)需要使用一个已经存在的类,但接口与设计要求不符。

(2)希望创建一个可以复用的类,该类可以与其他不相关的类或者是将来不可预见的类协同工作。

使用适配器时应该注意理解适配器的方向性,即注意区分适配器中的Adaptee(适配对象)和 Target(目标),在适配器的原理图中很容易看出Target,即被客户操作的是目标。

继承了接口,并且实现了接口里面所有的空方法,因为一个类需要实现接口中的一个方法,不需要直接 继承接口类,而是直接继承适配器!!!

(否则直接继承接口会继承接口中的所有的方法)

10 C#中,string str = null 与 string str ="",请尽量用文字说明区别。

string str =""初始化对象分配空间

而string str=null初始化对象

11 什么叫应用程序域?什么是托管代码?什么是强类型系统?什么是装箱和拆箱?什么是重载?CTS、CLS和 CLR分别作何解释?

(1)应用程序域:应用程序域为安全性、可靠性、版本控制以及卸载程序集提供了隔离边界。应用程序域通常由运行库宿主创建,运行库宿主负责在运行应用程序之前引导公共语言运行库。应用程序域提供了一个更安全、用途更广的处理单元,公共语言运行库可使用该单元提供应用程序之间的隔离。

(2)托管代码:使用基于公共语言运行库的语言编译器开发的代码称为托管代码;托管代码具有许多优点,例如:跨语言集成、跨语言异常处理、增强的安全性、版本控制和部署支持、 简化的组件交互模型、调试和分析服务等。

(3)装箱和拆箱:装箱和拆箱使值类型能够被视为对象。对值类型装箱将把该值类型打包到 Object 引 用类型的一个实例中。这使得值类型可以存储于垃圾回收堆中。拆箱将从对象中提取值类型。

(4)重载:每个类型成员都有一个唯一的签名。方法签名由方法名称和一个参数列表(方法的参数的顺序和类型)组成。只要签名不同,就可以在一种类型内定义具有相同名称的多种方法。当定 义两种或多种具有相同名称的方法时,就称作重载。

(5)CTS通用类型系统 (common type system) :

一种确定公共语言运行库如何定义、使用和管理类型的规范。

(6)CLR公共语言运行库:

.NET Framework 提供了一个称为公共语言运行库的运行时环境,它运行代码并提供使开发 过程更轻松的服务。

(7)CLS公共语言规范:

要和其他对象完全交互,而不管这些对象是以何种语言实现的,对象必须只向调用方公开那 些它们必须与之互用的所有语言的通用功能。为此定义了公共语言规范 (CLS),它是许多应 用程序所需的一套基本语言功能。

(8)强类型:

C# 是强类型语言;因此每个变量和对象都必须具有声明类型。

12 值类型和引用类型的区别?

基于值类型的变量直接包含值。将一个值类型变量赋给另一个值类型变量时,将复制包含的 值。这与引用类型变量的赋值不同,引用类型变量的赋值只复制对对象的引用,而不复制对 象本身。

所有的值类型均隐式派生自 System.ValueType。

与引用类型不同,从值类型不可能派生出新的类型。但与引用类型相同的是,结构也可以实 现接口。

与引用类型不同,值类型不可能包含 null 值。然而,可空类型功能允许将 null 赋给值类 型。

每种值类型均有一个隐式的默认构造函数来初始化该类型的默认值。

值类型主要由两类组成:结构、枚举

结构分为以下几类:Numeric(数值)类型、整型、浮点型、decimal、bool、用户定义的结 构。

引用类型的变量又称为对象,可存储对实际数据的引用。声明引用类型的关键字:class、 interface、delegate、内置引用类型: object、string

13 如何理解委托:

委托类似于 C++ 函数指针,但它是类型安全的。

委托允许将方法作为参数进行传递。

委托可用于定义回调方法。

委托可以链接在一起;例如,可以对一个事件调用多个方法。

方法不需要与委托签名精确匹配。有关更多信息,请参见协变和逆变。

C# 2.0 版引入了匿名方法的概念,此类方法允许将代码块作为参数传递,以代替单独定义的方法。

14 C#中的接口和类有什么异同。

异:

不能直接实例化接口。

接口不包含方法的实现。

接口、类和结构可从多个接口继承。但是C# 只支持单继承:类只能从一个基类继承实现。

类定义可在不同的源文件之间进行拆分。

同:

接口、类和结构可从多个接口继承。

接口类似于抽象基类:继承接口的任何非抽象类型都必须实现接口的所有成员。

接口可以包含事件、索引器、方法和属性。

一个类可以实现多个接口。

15 ASP.net的身份验证方式有哪些:

Windows 身份验证提供程序

提供有关如何将 Windows 身份验证与 Microsoft Internet 信息服务 (IIS) 身份验证结合 使用来确保 ASP.NET 应用程序安全的信息。

Forms 身份验证提供程序

提供有关如何使用您自己的代码创建应用程序特定的登录窗体并执行身份验证的信息。使用 Forms 身份验证的一种简便方法是使用 ASP.NET 成员资格和 ASP.NET 登录控件,它们一起 提供了一种只需少量或无需代码就可以收集、验证和管理用户凭据的方法。

Passport 身份验证提供程序

提供有关由 Microsoft 提供的集中身份验证服务的信息,该服务为成员站点提供单一登录 和核心配置

16 什么是SOAP

SOAP(Simple Object Access Protocol )简单对象访问协议是在分散或分布式的环境中交换信息并 执行远程过程调用的协议,是一个基于XML的协议。使用SOAP,不用考虑任何特定的传输协 议(最常用的还是HTTP协议),可以允许任何类型的对象或代码,在任何平台上,以任何一 直语言相互通信。

SOAP 是一种轻量级协议,用于在分散型、分布式环境中交换结构化信息。 SOAP 利用 XML 技术定义 一种可扩展的消息处理框架,它提供了一种可通过多种底层协议进行交换的消息结构。 这 种框架的设计思想是要独立于任何一种特定的编程模型和其他特定实现的语义。

SOAP 定义了一种方法以便将 XML 消息从 A 点传送到 B 点。 为此,它提供了一种基于 XML 且具有 以下特性的消息处理框架:

1) 可扩展,2) 可通过多种底层网络协议使用,3) 独立于编程模型。

17: 如何部署一个ASP.net页面:

VS 2005和VS 2003都有发布机制。2003可以发布然后再复制部署。

VS2005基本上可以直接部署到对应位置。

18: 如何理解.net中的垃圾回收机制:

.NET Framework 的垃圾回收器管理应用程序的内存分配和释放。每次您使用 new 运算符创建对象时 ,运行库都从托管堆为该对象分配内存。只要托管堆中有地址空间可用,运行库就会继续为新对象分 配空间。但是,内存不是无限大的。最终,垃圾回收器必须执行回收以释放一些内存。垃圾回收器优 化引擎根据正在进行的分配情况确定执行回收的最佳时间。当垃圾回收器执行回收时,它检查托管堆 中不再被应用程序使用的对象并执行必要的操作来回收它们占用的内存。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: