logo资料库

c#外文翻译.doc

第1页 / 共14页
第2页 / 共14页
第3页 / 共14页
第4页 / 共14页
第5页 / 共14页
第6页 / 共14页
第7页 / 共14页
第8页 / 共14页
资料共14页,剩余部分请下载后查看
A model is a program u
Chr
You might think that the co
Software devel
Abstract, a kind o
There are several design patt
If you do not
附件 1:外文资料翻译译文 C#设计模式 一个模式是一种方案,利用这种方案,我们可以完成某项工作。一个模式也是一种 途径,通过这种途径,我们可以达到某个目的。同时,一个模式也是一种技术。为了完 成某项工作,我们必须获取并利用有效的技术。这种思想可以应用于多种工作,例如: 做饭、制造烟火、开发软件以及其他工作。如果某乡工作所属的领域正在不段的完善, 那么,这个领域的从业人员会去寻找一些通用的、有效的解决方案,利用这些方案,在 不用的环境下解决相关问题,从而达到完成工作的目的。某个领域的从业人员经常会产 生该领域的习惯用语,这些习惯用语有助于相关人员对工作进行交流。模式也是一些习 惯用语。所谓模式,就是一些能够完成特定任务并达到任务目标的现成技术。随着某项 技术及相关习惯用语的发展,一些人将这项技术及模式记录成文,这些记录下来的文献 使习惯用语得到标准化,并使一些行之有效的技术得到了广泛传播。 Christopher Alexander 就是把某种技巧的最佳事实方案旧路为模式的先驱者之一。 他的研究领域是建筑学,而不是软件。在其著作《A Pattern Language:Towns,Buildings, Construction》一书中,Alexander 提出了建造房屋和建设城市的成功模式。Alexander 的著作影响深远,因此也影响到软件领域。这部著作之所以能够影响到其他领域,部分 也是因为作者对目的具有独特的观察方式。 你可能会认为,建筑模式的目的就是“设计建筑”。但是 Alexander 明确提出,应用 建筑模式的目的是服务于那些以后要居住在这些建筑物内或居住在这些城市中的人们, 并使他们感到舒适和欣慰。Alexander 的工作表明,模式是一种获取并交流某个技术领 域知识的极好途径。同时他也指出,合理地认识并记录某项工作的目的是非常关键的, 这需要哲学的思考,同时还面临着难以捉摸的挑战。 软件开发群体已经对模式产生了共鸣,并出版了大量著作来记录软件开发的模式。 这些书籍记录了软件过程的最佳时间、高级体系结构,以及软件在类级别的设计,同时, 与模式有关的新书还在不断出版。如果你需要选择译本有关模式的书籍,你应该首先花 一些时间去读一读那些对已出版书记的评论,然后,从中选择译本对你帮助最大的书籍, 并将其作为你的学习对象。 抽象的说,一个类的接口是由这个类的某些方法和字段构成的一个集合。其他类的
对象实例可以通过这个集合对这个类进行访问。借口通常表达了方法执行的操作所提供 的功能职责,这些职责往往用方法的名称、代码注释,以及其他文档进行描述说明。一 个类的实现指的是在类方法中实现的代码。 C#语言改进了接口的概念,使之可以单独进行构造,从而把接口(即:一个对象必 须做什么)和实现(即:一个对象如何满足其功能职责)有效地区分开来。C#语言的接 口允许多个类提供同一个功能,同时,C#的接口也可以使一个类实现多个接口。 有好几个设计模式可以利用 C#所提供的特征。例如:我们可以用一个接口来适配 某个类的接口,这实际是通过应用适配器模式来满足一个客户的需求。为了讨论某些无 法用 C#语言完成的工作,我们应该了解 C#语言是如何完成工作的,所以我们首先讨论 C#语言的接口。 如果你确实无法使用接口,那么,你可以使用抽象类(C++语言提供了抽象类)。然 而,在 n 层(n-tier)软件开发和对象定义构造等方面,接口具有关键的作用。与此类似 的是,如果你确实无法使用委托,那么你可以使用接口。如果某个公共任务需要注册一 个方法来进行回调,那么,委托可以改进这类任务,因此,C#语言提供的委托是一项非 常有用的内容。 1. 接口与抽象类 请指出 C#语言的抽象类与接口之间的三种不同之处。 在使用上,一个没有提供非抽象方法的抽象类与一个接口是类似的。然而,我们需 要注意以下几点: 一个类可以实现任意多个接口,但是最多只能对一个抽象类进行子类化。 一个抽象类可以包括非抽象方法,而一个接口的所有方法在效果上都是抽象的。 一个抽象类可以声明并使用变量,而一个接口不能。 一个抽象类中的方法的访问修饰符可以是 public、internal、protected、protected internal 或者是 private,而接口成员的访问修饰符在默认情况下都是 public,而且,在声 明接口成员时,不允许使用访问修饰符(甚至不允许使用 public 访问修饰符)。 一个抽象类可以定义构造函数,而一个接口不能。 2. 接口与委托 接口与委托的比较: 接口与委托的相似之处在于它们都可以定义我们所期望的功能。我们在学习使用委
托的过程中经常会产生一些混乱,究其原因,部分是由于“委托”这个词,它可以表达 含义具有微小差别的不同概念。在对委托和接口进行比较之前,我们有必要回顾一下委 托在 C#语言中是如何工作的。 C#语言的关键字 delegate 引入了一种新的委托类型,这种新的委托类型可以确定什 么类型的方法才可以用于实例化这种委托类型。委托类型没有规范方法的名称,但是它 规范了方法的参数类型和返回类型。 我们考虑以下声明: Public delegate object BorrowReader(IDataReader reader); 这条语句声明了一个新的委托类型。委托类型的名称是 BorrowReader。声明指出 该委托类型可以用任何方法进行实例化,只要这个方法接收一个 IDataReader 对象作为 方法参数,并且方法返回类型为 object。假定某个类中有以下方法: Pricate static object GetNames(IDataReader reader) { } //… GetNames()方法的参数类型和返回类型满足 BorrowReader 委托类型的规范定义,因 此可以使用这个方法名称对委托类型进行实例化,实例化语句如下: 变量 b 是一个 BorrowReader 委托类型的实例。任何能够访问该委托实例的代码都可 以调用对象 b,然后委托实例将调用对象 b 包容的方法。之所以使用对象实例 b,是因 为这个方案具有以下优点:其他方法可以在合适的时候调用对象 b 及其包容的方法。例 如:一个数据服务类可以获得一个数据库读取器,调用一个 BorrowReader 委托实例(即 把上述读取器传递给这个委托实例),然后把这个数据库读取器作为一个资源进行释放。 一个 C#接口可以包容方法、C#属性(property),以及索引器。一个接口也可以包 容时间,但是不能包容委托。为什么? 我们可以简单地给出以下解释: Delegate 关键字引入了一个新的类型,而 event 关键字引入了一个新的成员。一个 接口声明规范了成员,而不是类型,因此时间可以归入接口,而委托不能归入接口。 而详细的解释是: Event 关键字声明了一个特定类型的字段(一个“事件”),规范了其类型(必须是
一个委托类型)及其名称。C#限制了对事件的访问,客户不能使用事件类型(其委托类 型)的所有行为。客户只能使用委托所提供的+=和-=行为。这种限制所产生的结果之一 是:只有声明类可以调用(或激发)一个事件。但是,只要使某个类包容一个 public 事 件成员,一个接口客户的组成类就可以实例化上述那个类。因为事件是一个类的接口的 标准组成部分,因此我们有充分的理由让接口包括事件。 当采用委托对单个方法进行回调时,一个基于接口的设计是同样有效的。但是如果 设计中需要使用委托来持有并调用多哥方法时,那么,采用委托更为清晰。特别是当一 个对象使用一个委托让多个客户对一个事件(例如“点击”事件)进行注册的时候,这 个优点尤其突出。一个时间是一个成员,这个成员可以使一个对象或者类提供通知消息。 理解 C#语言的委托可能非常困难,特别是因为我们重复定义了“委托”这个术语 的意义。例如,我们可以使用“委托”这个术语表示一个委托声明、委托类型,甚至一 个委托实例。特别是,人们经常说“调用一个委托”,但是一个对象只能调用一个委托 的实例,而不能调用一个委托的类型。如果你感觉这部分内容有些混乱难解,别担心, 很多人都是如此。但是我们确实应该认真研究在 C#中委托是如何工作的,因为这不仅 是理解应用程序如何工作的关键,也是理解类之间如何进行交互的关键。 3. 接口与属性 C#语言的借口可以规范接口实现必须提供的索引器或者 C#属性。如果你定义了一 个新的集合类型,那么就需要规范一个索引器。如果你做出了以下声明,即某个实现中 必须包括一个方法,而这个方法要使用一个属性值,并且(或者)需要设置这个属性值, 那么,你就需要规范一个 C#属性。 以下代码声明了一个没有使用 C#属性的接口,但是在实现时,需要提供对一个广告 对象的属性的访问。 Public interface IAdvertisement { Int GetID(); String GetADCopy(); Void SetADCopy(string text); } 上述代码中的接口是 Oozinoz 系统中 Showproperties 类库的一部分。简单说来,这
个接口为其实现规范了两个 C#属性,但严格说来,它们并非 C#属性。使用 C#的语法进 行 C#属性规范的优点是其语法比较优雅。但是,最重要的一点是,不具备预见能力的 客户可以通过反射检测到 C#属性的存在。例如,只要相关对象属性是真正的 C#属性, 一个 Datagrid 对象就可以在一个 ArrayList 集合中显示相关对象的属性。 在一个接口中,C#属性的表示是依赖于语法的,因此在实现接口时会产生一些差异。 我们应该深入理解使用 C#接口特征的相关概念和使用细节。 4. 接口的细节 C#接口的主要优势在于,接口把对象的交互进行了限制。这种限制实际上是一种解 放。就一个实现了某个接口的类而言,这个类可能在提供这个接口服务功能的过程中发 生了许多变化,但是这些变化不会影响到这个类的客户。虽然使用借口的目的很容易理 解,但是在时间中,细节又迫使开发人员不断地求助于参考资料。 接口描述了类在交互过程中的期望行为和不期望行为。接口与纯抽象类很类似,接 口定义了它应该完成的功能,但是并没有实现这些功能。接口与委托也很类似,当然, 委托仅仅对每个方法规范了方法参数以及返回类型。 委托也是类型,因此一个接口无法包容一个委托并把它当作一个成员。然而委托类 型的变量和标记了 event 关键字的变量可以出现在接口中。 除了方法和事件,接口还可以包容索引器和属性。这些内容的语法非常重要,因为 客户可以通过使用这些成员类型以及使用反射,检测并了解实现类(实现类指实现了接 口的类)的行为。掌握如何应用 C#接口的概念和细节非常重要,因此这值得你花费一 些时间。这部分内容也是许多功能呢感强大的设计的核心内容,同时也是几种设计模式 的核心。 5. 普通接口无法提供的内容 使用 C#接口可以简化并加强系统设计,当然,有时候借口的设计可能会超出一般 接口的定义范围和使用范围。 如果希望把一个类的接口与一个客户的期望接口进行适配,那么可以应用适配器模 式。 如果你希望为类的集合提供一个简单的接口,那么可以应用外观模式。 如果你希望定义一个接口,使之可以应用于耽搁对象,也可以应用于对象组,那么 可以应用合成模式。
如果你希望将一个抽象与其实现进行分离,使之可以相互独立变化,那么可以应用 桥接模式。 每个设计模式的目的是:在一个特定的语境中解决一个问题。基于接口的模式强调 了语境,因为语境决定了我们是否需要定义或重新定义对方法的访问手段,这些方法既 可以是一个类的方法,也可以是一组类的方法。例如:如果某个类提供了我们所需要的 服务,但是方法名称与客户所期望的方法名称并不匹配,那么我们就可以使用适配器模 式解决这个问题。 如果一个对象需要调用我们开发的代码,那么这个对象是一个客户。在某些情况下, 客户的代码在我们的代码完成之后才开发的,因此开发人员可以要求可户的代码服从我 们的对象接口规范。但是在某些情况下,可户的代码也可以独立开发。例如:一个火箭 仿真程序需要使用我们提供的火箭信息,但是仿真程序也定义了火箭的工作方式。这种 情况下,我们会发现,现有的类已经提供了客户所需要的服务,但是方法的名称却不相 同。这时,我们就可以应用适配器模式。适配器模式的目的在于:如果客户需要使用某 个类的服务,而这项服务是这个类用一个不同的接口提供的,那么,可以使用适配器模 式为客户提供一个期望的接口。 C#语言与 JAVA 语言的不同之处就在于:C#语言不需要方法对任何可能抛出的异常 进行声明。这是否是一个良好特性?请给出你的结论和相关理由。 在一个方法首部之外对异常进行声明的原因是: 我们应该首先注意,JAVA 语言并不要求方法声明所有可能抛出的异常。例如,任 何方法都可能遇到一个空指针,然后抛出一个未声明的异常。甚至 JAVA 语言的设计者 也承认,强迫程序员声明所有可能的异常是一个不切实际的想法。应用程序需要一种策 略,并根据此策略处理所有的异常。要求开发人员声明某种类型异常的方法是不能替代 这种异常处理策略的。 另一方面:程序员应该得到所有他们能够得到的帮助。确实,一个应用程序的体系 结构应该具有一个可靠的异常处理策略。同时,强迫开发人员在每个方法中都对普遍存 在的问题(如空指针)进行声明也是不切实际的。对于某些类型的错误,如打开一个文 件过程中可能出现的问题,确实需要让方法的调用者来处理可能发生的异常。C#语言将 用语声明一个方法可能发生的异常的声明部分从方法首部去除了。实际上,这种方案是 在泼出洗澡水的同时,把孩子也泼出去了。
面向对象程序设计可以避免不程序设计为一个单体,从而避免了将程序的各个部分 混杂在一起。一个理想的面向对象应用程序应该是一个最小的类,这个类能够把其他可 重用类的行为有效地组织起来。 附件 2:外文原文 Design Patterns in C # A model is a program using such a program, we can complete certain tasks. A model is a way through this way, we can achieve a certain purpose. Meanwhile, a model is a technology. In order to complete a particular job, we need to access and use the technology effectively. This kind of thinking can be applied to many types of work, such as : cooking, pyrotechnic, software development and other work. If the work Township respective fields is not of sound, then the practitioners in the field will be to find some common, effective solutions, using these programs, not in the circumstances to resolve the relevant issues, complete the work so as to achieve the purpose. Certain areas of regular employees in the field will have a habit of terminology These habits contribute to the terms of the work related personnel exchanges. Some models customary terms. The so-called model is able to complete some specific task and reach the goal of the mission off-the-shelf technology. With a habit of technology and related terms, some of this technology and modes documented, These records document from the customary terms to be standardized and made some effective technology has been widely disseminated. Christopher Alexander is that some of the best skills facts old road program modeled on the one of the pioneers. His research area is the architecture, not the software. In his new book, "A Pattern Language : Towns, Buildings, Construction book, "Alexander the construction of housing and urban building the successful model. Alexander's works have far-reaching effects, it also affects software fields. This Department has been able to make an impact in other areas, partly because the author has a unique purpose of the observation. You might think that the construction approach is aimed at "building design." But Alexander made clear, Application architecture model, which aims to serve the future to those living in these buildings or living in these cities people, make them feel comfortable and
happy. Alexander's work showed that the model is a certain access and the exchange of technical knowledge in the field excellent way. He also pointed out that a reasonable understanding of a particular record and the object of the exercise is very crucial, this requires philosophical thinking, also faced with unpredictable challenges. Software development groups have to have a model resonates, and published a large number of books to record the software development model. These books record the software process the best time, senior architecture and software design category level, and and the pattern books are still published. If you need to choose the mode of translation of the books, You should first take some time to read those to the secretary of the published comments, and then from the translation of choice for your help greatest books, and as your 2020. Abstract, a kind of interface is the kind of certain methods and fields consisting of a pool. Other examples of the object can be set right through this class for a visit. Excuse the expression usually implementation of the method of operation for the functional responsibility, which often means using the name, code Notes and other documents for descriptive. Category 1 refers to the realization of the type of method to achieve code. C # language to improve the interface concept, so that it can be a separate structure, thereby interface (namely : an object must do what) and the realization (that is : a target how to meet their functional responsibilities) to effectively separate areas. C # language interface to allow for more than one category with a functional, and the C # interface can achieve more than one type interface. There are several design patterns can be used for the C # features. For example : we can use an interface to fit a certain type of interface, In reality, this is through the application adapter mode to meet a customer's needs. To discuss some language C # unable to complete the work, we should understand how the C # language is the work performed, Therefore, we first discuss the C # language interface. If you do not use interface, then you can use the abstract class (C + + language abstract). However, the n layer (n-tier) software development and definition of structure and other objects, the interface has a critical role to play. Similarly, if you do not use commissioned, then you can use the interface. If a public mandate required to be registered for a callback
分享到:
收藏